从json(不在正确的密钥对中)创建javascript对象(带密钥对)
我不知道如何从json数组中提取键/值,将它们挂接到javascript数组的不同部分 例如,我有两个json数组,如下所示:从json(不在正确的密钥对中)创建javascript对象(带密钥对),javascript,json,d3.js,Javascript,Json,D3.js,我不知道如何从json数组中提取键/值,将它们挂接到javascript数组的不同部分 例如,我有两个json数组,如下所示: long_short_data = [ { key: 'Series1', color: '#d62728', values: [ { "cell" : "label1" , "value" : 91970 } , { "cell" : "label2
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
} ,
...
}
]
}
];
系列1:
{"label1":"91970","label2":"1231", ... "labeln": "somenumbers".}
系列2:
{"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
} ,
...
}
]
}
];
感谢您的帮助。给定一个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]] });
}
var数组=[];
for(var ii=0,keys=Object.keys(系列);ii > p>您可以考虑使用,例如:
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\u short\u数据
将按照您的问题中的定义创建谢谢,这是一个很好的解决方案。我是一个笨蛋,所以很不幸,根据这个制度,我不能给你投票权。很高兴这有帮助。你不能投票,但你应该能够接受答案。要将答案标记为已接受,请单击答案旁边的复选标记,将其从空心切换为绿色。再次感谢。很抱歉花了很长时间。谢谢,这有助于我的理解。进一步考虑,我认为我应该首先清理php数据,即在处理js/客户端之前在php/服务器端设置数组/散列,即完全配置php散列(在那里合并两个系列),然后在对其进行json_编码时,在调用json_parse获取对象之前,它将是正确的json。