找到json字符串的长度

时间:2012-05-18 07:06:36

标签: javascript json

我有以下Jsonstring

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

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

由于

5 个答案:

答案 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 notArray且没有长度。如果你想知道它有多少属性,你需要计算它们:

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);

Working Example

答案 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);
        }); 

DEMO