繁体   English   中英

更改JSON的结构

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM