Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从json(不在正确的密钥对中)创建javascript对象(带密钥对)_Javascript_Json_D3.js - Fatal编程技术网

从json(不在正确的密钥对中)创建javascript对象(带密钥对)

从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

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

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

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。