57

我正在尝试计算 JSON 数组元素的长度。我知道使用 . 来计算数组的长度json.array.length。那就是需要找出每个索引中有多少项。

如果我的数组是:

{
  "shareInfo": [{
      "id": "1",
      "a": "sss",
      "b": "sss",
      "question": "whi?"
    },
    {
      "id": "2",
      "a": "sss",
      "b": "sss",
      "question": "whi?"
    },
    {
      "id": "3",
      "a": "sss",
      "b": "sss",
      "question": "whi?"
    },
    {
      "id": "4",
      "a": "sss",
      "b": "sss",
      "question": "whi?"
    }
  ]
}

然后我需要找到 的长度{"id":"1","a":"sss","b":"sss","question":"whi?"}。其中有四项。我试过这个data.shareInfo[i].length。但它会产生错误。

请任何人告诉我如何找到长度....谢谢....

4

4 回答 4

100

在回答之前阅读本文档一次。那你就清楚的明白答案了。

试试这个它可能对你有用。

Object.keys(data.shareInfo[i]).length
于 2013-03-04T19:35:32.580 回答
18

首先,如果您正在处理的对象是一个字符串,那么您需要解析它然后找出键的长度:

obj = JSON.parse(jsonString);
shareInfoLen = Object.keys(obj.shareInfo[0]).length;
于 2013-03-04T19:10:06.153 回答
1

首先,没有 JSON 对象之类的东西。JSON 是一种字符串格式,可用作 Javascript 对象文字的表示。

由于 JSON 是一个字符串,Javascript 会将它视为一个字符串,而不是一个对象(或数组或任何你试图使用它的东西。)

这是一个很好的 JSON 参考来阐明这种差异:

http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/

因此,如果您需要完成问题中提到的任务,则必须将 JSON 字符串转换为对象或将其作为字符串处理,而不是作为 JSON 数组处理。有几个库可以做到这一点。查看http://www.json.org/js.html以获取参考。

于 2013-03-04T19:40:38.290 回答
0

我觉得你应该试试

data = {"shareInfo":[{"id":"1","a":"sss","b":"sss","question":"whi?"},
{"id":"2","a":"sss","b":"sss","question":"whi?"},
{"id":"3","a":"sss","b":"sss","question":"whi?"},
{"id":"4","a":"sss","b":"sss","question":"whi?"}]};

ShareInfoLength = data.shareInfo.length;
alert(ShareInfoLength);
for(var i=0; i<ShareInfoLength; i++)
{
alert(Object.keys(data.shareInfo[i]).length);
}
于 2013-03-04T19:23:46.223 回答