簡體   English   中英

將JSON對象反序列化為數組

[英]Deserializing JSON objects to an array

我有一個API,它給我一個類似項目的列表作為不同的對象,而不是作為數組的成員。 讓我們看一下_items節點,它包含商店中的可用商品:

{
    "_ok":200,

    "_store":
          {
           "location":"Rome",
           "open":true
          },
    "_items":
         {
            "itemA":{ "color":"blue","size":3},
            "itemB":{ "color":"red","size":1},
            "itemC":{ "color":"cyan","size":3},
            "itemD":{ "color":"yellow","size":0},
          }

}

我使用非常好的Newtonsoft JSON.NET進行反序列化,但我不知道如何獲得項目列表。 列表是一個數組,說:

"_items":{["itemA":{ "color":"blue","size":3},"itemB":...

我想用JsonConvert來獲取它會很容易

List<Item> 

其中Item是一個具有顏色和大小成員的類。

太糟糕了,我無法更改API。 謝謝。

您可以使用JsonExtensionDataAttribute來存儲項目,並使用屬性將它們轉換為Item實例。

[JsonProperty("_items")]
private ItemsContainer _items;


[JsonObject(MemberSerialization.OptIn)]
class ItemsContainer
{
    [JsonExtensionData]
    private IDictionary<string, JToken> _items;

    public IEnumerable<Item> Items
    {
        get
        {
            return _items.Values.Select(i => i.ToObject<Item>());
        }
    }
}

暫無
暫無

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

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