0

我认为我的代码返回一个 JSON 数组。返回的 JSON 数组存储在一个 javascript 变量中:result。如果我

console.log(result); 

在FF中,我得到了输出

[{"id":"G24","value":"Zas, S"},{"id":"G75","value":"Wara, TS"},{"id":"G48","value":"Jala, S"}]

在 jsonLint 上验证为正确的 json。

在我的代码中,如果我像这样计算数组中的元素数:

var key, count = 0;
for(key in result) 
{
  count++;
}
console.log("result count is:" + count); 

输出为 94,这是数组中字符的长度/计数 - [上面显示的示例输出已修改]

但是,在 FF 的 JSON 选项卡中,它显示的结果是一个对象数组:

0   Object { id="G24", value="Zas, S"}
1   Object { id="G75", value="Wara, TS"}
2   Object { id="G48", value="Jala, S"}

我使用了来自“stackoverflow”来源的替代代码片段

for ( property in result )
{
   if(result.hasOwnProperty(property))
   {
     count++;
   }
}

这也产生了同样的结果。我怎样才能正确地迭代这个数组或对象数组或字符串或其他任何东西?并请数数?谢谢。

4

2 回答 2

4

听起来您有一个返回 JSON 文档的 HTTP 响应。

在 JSON 选项卡中,这显示为 JSON。

如果您的代码,您只是获取响应的文本并对其进行操作。

您需要解析 JSON 以创建 JavaScript 对象。

传递字符串JSON.parse并使用json2.js为旧浏览器填充。

于 2012-07-30T09:36:49.687 回答
2

您必须解析 JSON 以创建 JavaScript 数组。

result = JSON.parse(result); // Now it's an array
console.log(result.length) // prints now what you want
于 2012-07-30T09:39:40.953 回答