Javascript 查找JSON对象的长度

Javascript 查找JSON对象的长度,javascript,json,Javascript,Json,我有一个JSON,如下所示。 如何找到控制台中的空气长度 console.log (block.number.path[i].air.length); { "block": [ { "number": "36", "path": [ { "air": "[{\"name\":\"0\"},{\"name\":\"1\"},{\"name\":\"2\"}]" }, { "water": "[{\"name\":\"3\"},{\"na

我有一个JSON,如下所示。 如何找到控制台中的空气长度

console.log (block.number.path[i].air.length);

{ "block": [
    { "number": "36",
      "path": [
          { "air": "[{\"name\":\"0\"},{\"name\":\"1\"},{\"name\":\"2\"}]" },
          { "water": "[{\"name\":\"3\"},{\"name\":\"4\"},{\"name\":\"5\"}]" },
          { "sand": "[{\"name\":\"6\"},{\"username\":\"7\"},{\"name\":\"8\"}]" }
      ]
    }
  ]
}

air
本身包含一个JSON编码的数组,您必须首先对其进行解码:

// your obj in here
var obj = { "..." : "..." };

// grab the respective length of the "air" attribute
var air = JSON.parse( obj.block[0].path[0].air );
console.log( air.length );

您可以这样解决:

var length = JSON.parse(block.number.path[i].air).length;
console.log(length);

块是数组,因此必须首先访问元素:

a.block[0].path[0].air.length

其中,
a
是保存数据的变量。

看起来JSON的某些部分格式不正确。“air”、“water”和“sand”都是JSON数组……但被解析为字符串。如果您是生成JSON的人,请仔细研究,因为它似乎不正确。正如其他答案所指出的,只要您能够确保目标浏览器(大多数现代浏览器)具有该接口,就可以使用
JSON.parse()
,在Javascript中解决该问题


对于任何JSON数组(任何使用
[]
括号声明的数组),您可以检查其
.length
属性。

如果
JSON
是包含JSON的变量,您可以执行以下操作:

json["block"][0]["path"][0]["air"].length

air
是一个包含JSON的字符串。首先需要解析JSON以将其转换为数组。而且而
air
的“路径”实际上是:
obj.block[0]。路径[i]。air
。如果我是你,我会修复JSON,让它有一个合适的结构,就像你做的那样?air的值是一个字符串,而不是数组。为什么不投票?似乎stackoverflow只适用于有经验的人,有小问题的人将被否决(至少在提供的代码中,
block
是一个数组,包含一个对象,因此它需要是
block[0]
,就像奥利在回答中提到的那样。@t.niese在Felix Kling对问题本身的评论之后已经纠正了这一点:-)