(Использование Newtonsoft Json.NET)Десериализация с Наследование Newtonsoft JSON.NET не работает должным образом
Привет У меня есть проблема, когда десериализации список событий, где событие является базовым типом и, например, ResourceEvent - это подкласс. Если я просто выполняю сериализацию, а затем десериализую, все работает нормально, а список содержит ResourceEvents. Однако я храню те, которые используют EF7, в столбец jsonb в postgres.
Когда я получаю полезную нагрузку JSON из postgres, он переупорядочивает (но JSON legal) свойства. Когда я пытаюсь десериализовать с помощью Newtonsoft JSON.net, он дает мне список с базовыми типами Event, а не подкласса ResourceEvent.
Я добавил два сильно разборных примера, где различия заключаются в том, что свойство «Тип» находится в разных местах. В других классах также были упорядочены другие свойства. У меня нет комментариев по классам вообще.
Эта полезная нагрузка успешно deseralizes:
json
{
"$type": "System.Collections.Generic.List`1[[Event, Tests]], mscorlib",
"$values": [
{
"$type": "ResourceConfigurationEvent, Tests",
/* Properties */
"Resources": {
/* Properties */
},
"Type": 1
}
]
}
Эта полезная нагрузка безуспешно десериализует:
json
{
"$type": "System.Collections.Generic.List`1[[Event, Tests]], mscorlib",
"$values": [
{
"Type": 1,
"$type": "ResourceConfigurationEvent, Tests",
/* Properties */
"Resources": {
/* Properties */
},
}
]
}
Пожалуйста, прочтите [ask] и предоставьте [mcve], сфокусируйтесь на ** минимальном **. – CodeCaster
Прокрутить ... прокрутить ... прокрутить ... прокрутить ... прокрутить ... прокрутить ... нах, чтобы многое прочитать. – Reniuz
Можете ли вы предоставить определение класса, предложите не дезацинировать словарь, но что-то вроде этого [IgnoreDataMember] общедоступный словарь>(); [DataMember (Name = "name you want")] public IEnumerable ObjectToStore –