Код: Выделить всё
{
"id": 1000,
"rows": [
{
"costPriceIncludingVat": 1000,
"productInfo": {
"depth": 600,
"width": 2200,
"parts": {
"876-08533": {
"depth": 0,
"width": 0,
"description": "Thing 3",
"properties": {
"measure": "0"
}
},
"cabinet-1": {
"depth": 600,
"width": 746,
"parts": {
"JW_876-76117_P": {
"depth": 0,
"width": 0,
"description": "Thing 1",
"properties": {
"measure": "0"
}
}
},
"description": "Closet"
}
},
"description": "My description"
}
}
],
"quotation": "ABCDEF"
}
Код: Выделить всё
public class ProductInfo
{
public int Depth;
public int Width;
public List
Parts;
public string Description;
public Properties Properties;
}
Каждый узел в «частях» представляет собой ProductInfo, но имена узлов не являются с именем «productInfo», поэтому десериализатор не знает, как его десериализовать.
Я использовал System.Text.Json, но он вообще не десериализует. Я просто получаю новый экземпляр корневого класса. Newtonsoft.Json делает это лучше, но вызывает исключение:
Невозможно десериализовать текущий объект JSON (например, {"name":"value"})
в тип
'System.Collections.Generic.List`1[ConsoleTestApp.IvenzaTests.Models.ProductInfo]'
потому что тип для правильной
десериализации требуется массив JSON (например, [1,2,3]). Чтобы исправить эту ошибку, либо измените JSON на массив JSON
(например, [1,2,3]), либо измените десериализованный тип так, чтобы он был обычным
типом .NET (например, не примитивным типом). например целое число, а не тип коллекции
, такой как массив или список), который можно десериализовать из объекта JSON
. JsonObjectAttribute также можно добавить к типу, чтобы заставить его
десериализоваться из объекта JSON.
Как заставить десериализатор распознавать каждый элемент в массиве частей как ProductInfo?
Желательно использовать System.Text.Json.
Подробнее здесь: https://stackoverflow.com/questions/792 ... pertynames