length
类型数组支持属性。
data:{"Top":{"person":[{"A":"a","B":"b"},{"A":"a","B":"b"}]}}
在这种情况下,person
数组包含在[ ]
至于data:{"Top":{"person":{"A":"a","B":"b"}}}
person
只是一个对象。因此length
是undefined
为了它。
如果您要使用字符串创建 json 或对其进行格式化,请确保包含[
和]
forperson
属性。
JSFiddle
https://jsfiddle.net/d6pqnckh/
还使用 JSON 格式化程序来测试 JSON 结构。
更新
由于您不确定 JSON 结构。您可以做的是在访问长度之前person
检查它是数组还是对象。
if(Object.prototype.toString.call(data.Top.person) === '[object Array]')
alert(data.Top.person.length);
//It is an array
else
alert("I AM OBJECT"); //It is of an object type
更新小提琴:https ://jsfiddle.net/wys7awuz/
让它成为一个数组,不管 https://jsfiddle.net/ofkboh6k/
var p = data.Top.person;
delete data.Top.person;
data.Top.person = [];
data.Top.person.push(p);
alert(data.Top.person.length);
将此包含在条件的其他部分中。它将使其成为一个数组。