0

我不知道如何从 json 数组中提取键/值以将它们挂接到 javascript 数组的不同部分。

例如,我有 2 个 json 数组,如下所示:

系列一:

{"label1":"91970","label2":"1231", ...  "labeln": "somenumbers".}

系列二:

{"label1":"4556","label2":"3434", ....}

我想将它们都转换为 1 个 javascript 对象(用于 nvd3 绘图),如下所示:

long_short_data = [ 
  {
    key: 'Series1',
    color: '#d62728',
    values: [
      { 
        "cell" : "label1" ,
        "value" : 91970
      } , 
      { 
        "cell" : "label2" ,
        "value" : 1231
      } ,
.....
    ]
  },
  {
    key: 'Series2',
    color: '#1f77b4',
    values: [
      { 
        "cell" : "label1" ,
        "value" : 4556
      } , 
      { 
        "cell" : "label2" ,
        "value" : 3434
      } , 
 ...
      }
    ]
  }
];

感谢你的帮助。

4

2 回答 2

0

给定一个 JSON 字符串,您应该首先调用JSON.parse()将其转换为 Javascript 对象。

然后,您可以使用Object.keys(obj)返回直接属于的属性数组的函数obj来构建您的数组:

var array = [];
for (var ii = 0, keys = Object.keys(series); ii < keys.length; ii++) {
    array.push({ cell : keys[ii], value : series[keys[ii]] });
}
于 2013-08-22T00:00:33.360 回答
0

您可以考虑使用d3.keys,例如:

var series1 = {"label1":"91970","label2":"1231","labeln": "453453"};
var series2 = {"label1":"4556","label2":"3434"};
var long_short_data = [ 
  {
    key: 'Series1',
    color: '#d62728',
    values: []
  },
  {
    key: 'Series2',
    color: '#1f77b4',
    values: []
  }
];
d3.keys(series1).forEach(function(d) { 
    long_short_data[0].values.push(
      { 
        "cell" : d ,
        "value" : +series1[d]
      }
    );
});
d3.keys(series2).forEach(function(d) { 
    long_short_data[1].values.push(
      { 
        "cell" : d ,
        "value" : +series2[d]
      }
    );
});

long_short_data将按照您的问题中的定义创建

于 2013-08-22T00:32:44.430 回答