jSon对象计数

cou*_*011 5 javascript json

我有一个st从Web服务返回的字符串.我将字符串转换为对象,我如何计算否.里面的数组?(对于这种情况,它是2)

var st = "{[{"Name": "fake", "Address": "add"]},[{"Name": "fake", "Address": "add"}]}";  
var json = eval(st);  
Run Code Online (Sandbox Code Playgroud)

json.length总是回归1

Bak*_*dan 17

@ coure06我改变了你的JSON.希望这将是有用的

var persons = {
    "person1" : {
        "Name": "Adam",
        "Address": "USA" 
    },
    "person2" : {
        "Name": "Jamie",
        "Address": "USA" 
    }
};
var count = 0;
//var count = persons.length;          // wont work
for ( property in persons )          // should return 2
{
   if(persons.hasOwnProperty(property))
   {
      count++;
   }
}
Run Code Online (Sandbox Code Playgroud)

在jsfiddle的实例


T.J*_*der 5

我很惊讶json.length回来了什么; JSON字符串无效.最外面的花括号({})表示一个对象,它必须包含键和值,但它只包含一个值(数组,没有键).

如果你删除花括号,它应该可以正常工作.你把它们放在那里,也许是因为你看到它了吗?如果是这样,你想要括号(()),而不是花括号.

请注意,eval在JSON字符串上使用是不安全的,您希望使用不使用的JSON解码器eval(如json2.js,它使用eval,但只有在非常小心地确保它是安全的,必要时进行修改),最佳安全性.括号有帮助,但它们根本不是一个完整的解决方案.