Json.net自定义字典格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Json.net自定义字典格式相关的知识,希望对你有一定的参考价值。

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

[
    {
        "AB": 20
    },

    {
        "CD": 15
    }
]

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

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

有什么我可以映射到匹配他们写的东西而不必编写一堆自定义代码?

答案

解析此类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);

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

以上是关于Json.net自定义字典格式的主要内容,如果未能解决你的问题,请参考以下文章

使用 Json.Net 序列化时指定自定义 DateTime 格式

使用JSON.NET实现对象属性的自定义化格式

如何将字典的值序列化为json(使用json.net)[重复]

具有数据类型的 Json.NET 自定义 JsonConverter

ASP.NET MVC 下自定义 JsonResult,使用 Json.NET 序列化 JSON

VSCode自定义代码片段——CSS选择器