簡體   English   中英

C#反序列化奇怪格式的JSON數組

[英]C# deserializing weirdly formatted JSON array

我正在為會計軟件開發客戶端庫。 通過HTTP API完成通信,該API返回JSON響應。 到目前為止,JSON一直很普通,可以輕松轉換為Json.Net解析的類。 但是有一個查詢,它返回一個非常奇怪的數組-每個數組成員都有一個標題(不重要),並被當作不同的對象(100%相同的成員)對待。 上一次我處理它時,我寫了一個小助手來刪除鍵,並用[]替換了{},但是我想知道是否可以直接使用Json.NET來正確解析它。

我正在使用最新的穩定Json.Net,.Net Framework 4.6,並使用JsonConvert.DeserializeObject反序列化。

Json數組,無法解析

{
      ...
      "warehouses": {
        "1": {
          "warehouseID": 1,
          "totalInStock": 0,
          ...
        },
        "2": {
          "warehouseID": 2,
          "totalInStock": 0,
          ...
        },
        "3": {
          "warehouseID": 3,
          "totalInStock": 0,
          ...
        },
        "4": {
          "warehouseID": 4,
          "totalInStock": 0,
          ...
        }
      },
      ...
}

班級

public class MainObject{
    ...
    public List<Warehouse> warehouses { get; set;}
    ...
}

public class Warehouse{
    public int warehouseID { get; set; }
    public string totalInStock { get; set; }  
    ...
}

'無法反序列化當前JSON對象(例如{“ name”:“ value”})為類型'System.Collections.Generic.List`1 [Warehouse]',因為該類型需要JSON數組(例如[1,2,3 ])正確反序列化。

那不是數組,而是鍵值映射。 C#中的相應類將是Dictionary<TKey,TValue>

重構為以下內容:

public class MainObject{
    ...
    public Dictionary<int, Warehouse> warehouses { get; set;}
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM