[英]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.