Javascript 查找JSON对象的长度
我有一个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
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对问题本身的评论之后已经纠正了这一点:-)