【问题标题】:JSON - How to loop through a json object?JSON - 如何循环一个 json 对象?
【发布时间】:2012-12-04 01:20:16
【问题描述】:

我对 JSON 很陌生。我已经尝试过 JSON 的基础知识,但在示例中我使用它是在数组中,键是在字符串中。我的完全不同,它是一个对象,键是一个数字。我的 JSON 对象的示例是 var ojbJSON = {55: 3, 23: 2};。我的问题是我无法获取对象的长度,因为它没有属性长度,如果我执行alert(objJSON.55); 之类的操作来获取值3,则会导致javascript 错误。请不要问我为什么要坚持这一点。请帮忙。谢谢。

【问题讨论】:

  • 根据the JSON spec,你所拥有的构造甚至不是有效的JSON:一个对象(这是你基于它周围的{}所拥有的,它由名称-值对组成,其中name 应该是一个字符串。IMO 这种非标准用法注定会在某个地方引起问题...

标签: json object loops


【解决方案1】:

您必须迭代才能获得计数:

 var i=0;
 for (var key in objJSON) i++;
 alert(i);

您可能想为此编写一个帮助程序,例如:

function getLength(obj) {
    var i=0;
    for (var key in objJSON) i++;
    return i;
}
alert(getLength(objJSON));

要在它不是有效的 Javascript 变量名称(如数字或包含连字符的名称等)时获取键,您可以使用括号表示法:

alert(objJSON[55]);

【讨论】:

  • 你的回答真的很有帮助,但我有一些奇怪的事情发生了我试过这个for (var key in objJSON) { alert(key + " : " + objJSON[key]); },但它的顺序相反。
  • @NinjaBoy 哇,你说得对……这很奇怪。不知道那是关于什么的。顺便说一句,如果您要进行大量对象操作,可能值得查看 Underscore.js。它具有实用方法,例如获取对象中的所有键或值、排序、分组等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-24
相关资源
最近更新 更多