我有以下Jsonstring
var j = { "name": "John" };
alert(j.length);
它警告:未定义,如何找到json数组对象的长度?
由于
答案 0 :(得分:8)
让我们从json字符串开始:
var jsonString = '{"name":"John"}';
您可以轻松确定其长度:
alert("The string has "+jsonString.length+" characters"); // will alert 15
然后将其解析为一个对象:
var jsonObject = JSON.parse(jsonString);
JavaScript Object
is not和Array
且没有长度。如果你想知道它有多少属性,你需要计算它们:
var propertyNames = Object.keys(jsonObject);
alert("There are "+propertyNames.length+" properties in the object"); // will alert 1
如果Object.keys
,在您的环境(旧浏览器等)中无法使用Array
获取Object
来自var props = 0;
for (var key in jsonObject) {
// if (j.hasOwnProperty(k))
/* is only needed when your object would inherit other enumerable
properties from a prototype object */
props++;
}
alert("Iterated over "+props+" properties"); // will alert 1
的(自己的)属性名称的功能,您将会需要手动计算:
{{1}}
答案 1 :(得分:3)
function getObjectSize(o) {
var c = 0;
for (var k in o)
if (o.hasOwnProperty(k)) ++c;
return c;
}
var j = { "name": "John" };
alert(getObjectSize(j)); // 1
答案 2 :(得分:3)
另一种方法是使用后面的JSON.stringify
方法,该方法将为您提供一个对象(字符串),您可以在其上使用length
属性:
var x = JSON.stringify({ "name" : "John" });
alert(x.length);
答案 3 :(得分:1)
javascrit中没有json数组对象。 j
只是javascript中的一个对象。
如果你的意思是对象拥有的属性数量(不包括原型),你可以通过以下方式计算:
var length = 0;
for (var k in j) {
if (j.hasOwnProperty(k)) {
length++;
}
}
alert(length);
答案 4 :(得分:1)
Jquery的替补:
var myObject = {"jsonObj" : [
{
"content" : [
{"name" : "John"},
]
}
]
}
$.each(myObject.jsonObj, function() {
alert(this.content.length);
});