如何将JSON对象数组转换为包含数组的对象

时间:2015-10-14 13:35:27

标签: c# json json.net

我使用JSON.NET编写了json序列化,如下所示:

{
    "data": [
        {
            "A": "1",
            "B": "4"
        },
        {
            "A": "2",
            "B": "5"
        },
        {
            "A": "3",
            "B": "6"
        }
    ]
}

任何想法如何从多个键更改为具有多个值的一个键

{
    "data": {
        "A": [
            "1",
            "2",
            "3"
        ],
        "B": [
            "4",
            "5",
            "6"
        ]
    }
}

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以使用Json.Net的LINQ-to-JSON API轻松完成此操作:

JObject obj = JObject.Parse(json);

obj["data"] = new JObject(obj["data"]
    .Children<JObject>()
    .SelectMany(jo => jo.Properties())
    .GroupBy(jp => jp.Name)
    .Select(g => new JProperty(g.Key, new JArray(g.Values()))));

Console.WriteLine(obj.ToString());

小提琴:https://dotnetfiddle.net/dXCdlO