从JSON数组转换为对象后的未定义值

时间:2012-11-02 21:07:58

标签: javascript

我有一个JSON数组,其中一个对象由节点和链接组成。

data = [Object]=[ { nodes: Array[..] ,links: Array[…] } ]

这一切都很好,但是为了访问链接,例如我必须使用data [0] .links,这有点烦人。我希望数组成为一个对象,以便data.links可以访问链接。我试图设置:

data = data[0];

然后,Objects,data.links数组显示为“undefined”。看起来当访问特定元素时,会显示该值,例如data.links[3].name。这是为什么?

编辑:

更具体地说:

如果data = [{nodes:Array [...],links:Array [...]}] =>

console.log(data[0].links); //shows the data[0].links[0].name = value in the console

如果data = {nodes:Array [...],则链接:Array [...]} =>

console.log(data.links); //shows data[0].links[0].name = undefined

但有趣的是

console.log(data.links[0].name); //shows the correct value.

1 个答案:

答案 0 :(得分:1)

一些解决方案:

如果您控制JSON输出,只需删除那些基本上将对象包装在数组中的括号[]

data = { nodes: [...] ,links: [...] };

如果你不控制JSON,只需简单地将数组的零索引分配给你真正想要使用的变量。

json = [ { nodes: [...] ,links: [...] } ];
data = json[0];

不幸的是,'links'是一个数组。要访问该数组的成员,您需要访问其索引值。