如何获得正确的计数NOT JSON数据的字符长度

时间:2012-07-30 09:34:46

标签: javascript json

我认为我的代码返回了一个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'sources

中的替代代码段
for ( property in result )
{
   if(result.hasOwnProperty(property))
   {
     count++;
   }
}

这也有同样的结果。我怎样才能正确地迭代这个数组或对象数组或字符串或其他任何东西?请好好算一下?感谢。

2 个答案:

答案 0 :(得分:4)

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

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

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

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

将字符串传递给JSON.parse并使用json2.js对旧版浏览器进行填充。

答案 1 :(得分:2)

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

result = JSON.parse(result); // Now it's an array
console.log(result.length) // prints now what you want