-1

我有一个如下所示的 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\"}]" }
      ]
    }
  ]
}
4

5 回答 5

4

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

http://jsfiddle.net/pLAny/

于 2013-07-03T14:37:12.193 回答
2

你可以像这样解决这个问题:

var length = JSON.parse(block.number.path[i].air).length;
console.log(length);
于 2013-07-03T14:37:30.317 回答
1

看起来有些 JSON 格式不正确。“air”、“water”和“sand”都是 JSON 数组……但被解析成字符串。如果您是生成 JSON 的人,请查看它,因为它看起来不正确。正如其他答案所指出的那样,JSON.parse()只要您可以确定您的目标浏览器具有该界面(大多数现代浏览器),它仍然可以在 Javascript 中解决。

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

于 2013-07-03T14:40:47.017 回答
1

鉴于这json是一个包含您的 JSON 的变量,您可以执行以下操作:

json["block"][0]["path"][0]["air"].length
于 2013-07-03T14:41:22.130 回答
0

Block 是一个数组,因此您必须先访问该元素:

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

wherea是您保存数据的变量。

于 2013-07-03T14:39:38.137 回答