为什么在要求json.length时我得到了未定义?

时间:2011-09-16 09:51:02

标签: json

我有一个像这样的json:

{"result":{"sandbox":1,"0":{"id":1106,"url":"http:\/\/www.example.com\/index1.html"},"1":{"id":9655,"url":"http:\/\/www.example.com\/index2.html"},"2":{"id":8447,"url":"http:\/\/www.example.com\/index3.html"}}}

我正在检索它,然后执行此操作:

var json = JSON.parse(data);
console.log(json.length);

但控制台输出“未定义”,即使我只是登录(json)它显示对象。为什么?我怎样才能获得长度?我需要它用于for循环

2 个答案:

答案 0 :(得分:0)

该JSON文档中的根级元素是一个对象,而不是一个数组。对象没有length属性。相反,您可以打印出整个对象:

console.log(json);

请注意,对于对象,您应该使用数组而不是数字键,如下所示:

{"result":
  {"sandbox":1,
   "results": [
      {"id":1106,"url":"http:\/\/www.example.com\/index1.html"},
      {"id":9655,"url":"http:\/\/www.example.com\/index2.html"},
      {"id":8447,"url":"http:\/\/www.example.com\/index3.html"}
   ]
  }
}

使用此修改后的JSON,您可以输出:

console.log(modifiedJson.result.results.length);

答案 1 :(得分:0)

json不是一个数组,所以你不会得到它的长度。

如果json有类似[1,2,3]的东西,那么它就是一个数组

您可以获得console.log(json.result)

尝试使用Online Parser