Почему System.Text.Json не удается десериализовать Json в общий классC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему System.Text.Json не удается десериализовать Json в общий класс

Сообщение Anonymous »


У меня есть два класса и перечисление:

публичный абстрактный класс Изменено { общественный абстрактный объект OldValue {get; набор; } общественный абстрактный объект NewValue {get; набор; } общественный тип TrackedPropertyType {get; набор; } } публичный класс Changed: Изменено { общественный объект переопределения OldValue {get; набор; } общественный объект переопределения NewValue {get; набор; } общедоступное изменение (T oldValue, T newValue, тип TrackedPropertyType) { СтароеЗначение = староеЗначение; НовоеЗначение = новоеЗначение; Тип = тип; } } общедоступное перечисление TrackedPropertyType { Номер телефона, Имя, Электронная почта, Дата рождения, Работал в Додо, SocialNetworkMessagingEnable, ИсКейВорд, Забанен, Является мошенничеством, IsRemove, } Я могу без проблем сериализовать экземпляр этого класса в json. Например:

{"type": 6, "newValue": 1, "oldValue": 2} или

{"type": 5, "newValue": true, "oldValue": true} но когда я пытаюсь десериализовать его вот так:

JsonSerializer.Deserialize(json, options); Я получаю:

System.InvalidOperationException: каждый параметр в конструктор десериализации по типу 'Dodo.Control.Ratings.Model.MysteryShoppers.Events.Changed`1[System.Boolean]' должен быть привязан к свойству или полю объекта при десериализации. Каждый имя параметра должно совпадать со свойством или полем объекта. Поля учитываются только в том случае, если «JsonSerializerOptions.IncludeFields» включен. Соответствие может быть нечувствительным к регистру.

Параметры содержат:
[*]PropertyNameCaseInsensitivity: true [*]JsonCamelCaseNamingPolicy: JsonCamelCaseNamingPolicy
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»