[英]Change structure of JSON
我想将数据库中的数据绑定到折线图,但是我很难制作JSON格式。 请帮助我像这样更改JSON:
{
"LineListChart": [
{
"name": "Pembunuhan",
"data": 0
},
{
"name": "Pembunuhan",
"data": 0
},
{
"name": "Pembunuhan",
"data": 14
},
{
"name": "Pembunuhan",
"data": 4
},
{
"name": "Pembunuhan",
"data": 10
}
]
}
像这样:
{
"LineListChart": [
{
"name": "Pembunuhan",
"data": [0,0,14,4,10]
}
]
}
您可以使用reduce
看看下面
var data ={ "LineListChart": [ { "name": "Pembunuhan", "data": 0 }, { "name": "Pembunuhan", "data": 0 }, { "name": "Pembunuhan", "data": 14 }, { "name": "Pembunuhan", "data": 4 }, { "name": "Pembunuhan", "data": 10 } ] } var chartData= data.LineListChart.reduce((result, item)=> { if (!result.LineListChart){ result.LineListChart =[{name: item.name, data: [item.data]}]; }else result.LineListChart[0].data.push(item.data); return result; }, {}) console.log(chartData)
使用Json.Net的LINQ-to-JSON API,您可以像这样转换JSON:
var obj = JObject.Parse(json);
obj["LineListChart"] = new JArray(
obj["LineListChart"]
.Children<JObject>()
.GroupBy(jo => (string)jo["name"], jo => jo["data"])
.Select(g => new JObject(
new JProperty("name", g.Key),
new JProperty("data", new JArray(g))
))
);
json = obj.ToString();
小提琴: https : //dotnetfiddle.net/qpuQy7
因为问题是json.net,所以我用C#提供了json.net的答案
string test = @"{
'LineListChart': [
{
'name': 'Pembunuhan',
'data': 0
},
{
'name': 'Pembunuhan',
'data': 0
},
{
'name': 'Pembunuhan',
'data': 14
},
{
'name': 'Pembunuhan',
'data': 4
},
{
'name': 'Pembunuhan',
'data': 10
}
]
}";
JObject obj = JObject.Parse(test);
JArray categories = (JArray)obj["LineListChart"];
var query = from c in categories group c by c["name"]
into g select new { name = g.Key.ToString(),
data =g.Select(c => (string)c["data"]) };
var res = JsonConvert.SerializeObject(new { LineListChart = query.ToList() });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.