Десериализация JSON с массивом
У меня проблема с десериализацией JSON
Строка JSON
{
"id": "1",
"marketId": "1",
"userId": "2",
"svisorId": "1",
"orders": "[{\"Id\": 3, \"Count\": 1, \"Price\": 1000, \"Weight\": 1500, \"ShareId\": 0}]",
"date": "1516770391",
"totalWeight": "1500",
"totalPrice": "1000",
"debt": "1000",
"shipped": "0"
}
Свойство "orders" является массивом класса ProductOrderInfo
Классы
public class OrderInfo
{
public int Id
{ get; set; }
public int MarketId
{ get; set; }
public int UserId
{ get; set; }
public int SVisorId
{ get; set; }
//public List<ProductOrderInfo> Orders; even tried List type
public ProductOrderInfo[] Orders
{ get; set; }
public int TotalPrice
{ get; set; }
public int TotalWeight
{ get; set; }
public int Dept
{ get; set; }
public bool Shipped
{ get; set; }
public int Date
{ get; set; }
}
public class ProductOrderInfo
{
public int Id
{ get; set; }
public int Count
{ get; set; }
public int Price
{ get; set; }
public int Weight
{ get; set; }
public int ShareId
{ get; set; }
}
Десериализация с JsonConvert.DeserializeObject(json_string) всегда дает сбой и выдает исключение
JsonSerializationException: Error converting value "[{"Id": 3, "Count": 1, "Price": 1000, "Weight": 1500, "ShareId": 0}]" to type 'Project.Classes.ProductOrderInfo[]'. Path 'orders', line 6, position 92.
Я уже искал похожую проблему, такую как массив ошибок десериализации C# JSON, но это не помогло мне
1 ответ
Решение
Измените строку JSON, как показано ниже
{
"id": "1",
"marketId": "1",
"userId": "2",
"svisorId": "1",
"orders": [{"Id": 3, "Count": 1, "Price": 1000, "Weight": 1500, "ShareId":0}]",
"date": "1516770391",
"totalWeight": "1500",
"totalPrice": "1000",
"debt": "1000",
"shipped": 0
}
Ошибка связана с
Вы рассматриваете Массив заказов как строку, а отправленный - это bool, но рассматриваете его как строку.
Используйте код ниже для десериализации
JsonConvert.DeserializeObject<OrderInfo>(json_string)