如何使重复的 json 对象的 属性 成为父对象并将其其他属性合并为 c# 中的子对象

how to make a duplicate json object's property a parent and merge it's other properties as child in c#

我们有如下所示的 json 格式,并希望按照预期输出中给定的格式对其进行规范化。

输入格式: [ { “国家”:“德国”, "名称": "2010", “价值”:40632 }, { “国家”:“美国”, "名称": "2010", “价值”:0 }, { “国家”:“美国”, "姓名": "2000", “价值”:45986 }, { “国家”:“美国”, "名称": "1990", “价值”:37060 }, { “国家”:“法国”, "名称": "2010", “价值”:36745 }, { “国家”:“法国”, "姓名": "2000", “价值”:34774 } ]

预期输出:

[ { "name": "德国", “系列”: [ { "名称": "2010", “价值”:40632 } ] }, { "name": "美国", “系列”: [ { "名称": "2010", “价值”:0 }, { "姓名": "2000", “价值”:45986 }, { "名称": "1990", “价值”:37060 } ] }, { "name": "法国", “系列”: [ { "名称": "2010", “价值”:36745 }, { "姓名": "2000", “价值”:34774 } ] } ]

试试这个

    var jArr = JArray.Parse(input);
    var groupedData = jArr.GroupBy(a => a["country"]).ToList();

    var outputArr = new JArray();
    foreach (var item in groupedData)
    {
        JObject obj = new JObject();
        obj.Add("name", item.Key);
        var arr = new JArray();
        obj.Add("series", arr);
        foreach (var jObj in item)
        {
            JObject newObj = new JObject();
            newObj.Add("name", jObj["name"]);
            newObj.Add("value", jObj["value"]);
            arr.Add(newObj);
        }
        outputArr.Add(obj);
    }

    var output = outputArr.ToString();