Json.net自定义字典格式

时间:2017-12-22 13:44:58

标签: c# json.net

我正在写一些类来调用我没写过的API。 API编写得很奇怪,并且有一些看起来像这样的数据:

[
    {
        "AB": 20
    },

    {
        "CD": 15
    }
]

我知道一个典型的词典会像这样序列化:

{
    "AB": 20,
    "CD": 15
}

我可以映射到什么内容以匹配他们所写的内容而无需编写一堆自定义代码吗?

1 个答案:

答案 0 :(得分:0)

解析此类JSON并获取包含所有键/值的Dictionary的一种方法如下:

string json = @"
[
    {
        ""AB"": 20
    },

    {
        ""CD"": 15
    },

    {
        ""EF"": 35
    }
]";

JArray obj = JsonConvert.DeserializeObject<JArray>(json);
var dict = obj.ToList()
    .SelectMany(x => x.ToList())
    .Cast<JProperty>()
    .ToDictionary(x => x.Name, x => x.Value);

基本上,它会展平所有数组元素并从每个元素构造一个字典。