Десериализация 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)
Другие вопросы по тегам