Почему System.Text.Json не удается десериализовать Json в общий класс ⇐ C#
Почему System.Text.Json не удается десериализовать Json в общий класс
У меня есть два класса и перечисление:
публичный абстрактный класс Изменено { общественный абстрактный объект 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
У меня есть два класса и перечисление:
публичный абстрактный класс Изменено { общественный абстрактный объект 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
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение