0

我有以下 Jsonstring

  var j = { "name": "John" };
            alert(j.length);

它警告:未定义,我如何找到 json Array 对象的长度?

谢谢

4

5 回答 5

8

让我们从 json 字符串开始:

var jsonString = '{"name":"John"}';

您可以轻松确定其长度:

alert("The string has "+jsonString.length+" characters"); // will alert 15

然后将其解析为一个对象:

var jsonObject = JSON.parse(jsonString);

JavaScript不是,也没有长度。如果你想知道它有多少属性,你需要计算它们:Object Array

var propertyNames = Object.keys(jsonObject);
alert("There are "+propertyNames.length+" properties in the object"); // will alert 1

如果在您的环境(旧版浏览器等)中无法使用从 中获取(自己的)属性名称Object.keys的函数,则需要手动计数:ArrayObject

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
于 2012-05-18T07:14:05.193 回答
4

另一种方法是使用后JSON.stringify一种方法,该方法将为您提供一个对象(一个字符串),您可以在该对象上使用该length属性:

var x = JSON.stringify({ "name" : "John" });

alert(x.length);

工作示例

于 2012-05-18T07:21:09.957 回答
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
于 2012-05-18T07:11:11.350 回答
1

javascrit 中没有 json Array 对象。j只是javascript中的一个对象。

如果您指的是对象具有的属性数量(不包括原型的),您可以通过以下方式计算它:

  var length = 0;
  for (var k in j) {
    if (j.hasOwnProperty(k)) {
      length++;
    }
  }
  alert(length);
于 2012-05-18T07:13:27.917 回答
1

Jquery 中的替代方法:

 var myObject = {"jsonObj" : [    
        {
            "content" : [
                {"name" : "John"},
            ]
        }
        ]
       }
        $.each(myObject.jsonObj, function() {
           alert(this.content.length);
        }); 

演示

于 2012-05-18T07:16:53.633 回答