簡體   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