如何使重复的 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();
我们有如下所示的 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();