我知道这不是最好的方法,但我别无选择:(
我必须通过索引访问 JSONObject 中的项目。访问对象的标准方法是编写 this[objectName]
或 this.objectName
。我还找到了一种获取 json 对象中所有字段的方法:
(for (var key in p) {
if (p.hasOwnProperty(key)) {
alert(key + " -> " + p[key]);
}
}
(来源:Loop through Json object)。
但是,无法通过索引直接访问 JSON 字段。我现在看到的唯一方法是创建一个数组,使用上面的函数,通过索引获取字段名,然后通过字段名获取值。
据我所知,p(在我们的例子中,JSON 文件必须是一个可迭代的数组,否则 foreach 循环将不起作用。我如何直接访问这个数组?或者它是某种未排序的列表?
最佳答案
一个 JSON 对象更像是一个键值映射;所以,是的,它是未分类的。绕过的唯一方法是您已经提到的索引->属性名称映射:
var keysbyindex = Object.keys(object);
for (var i=0; i<keysbyindex.length; i++)
alert(object[keysbyindex[i]]);
但是为什么需要这些索引呢?未排序的映射也没有像数组那样的长度属性。为什么不使用 for-in-loop
var counter = 0; // if you need it
for (var key in object) {
alert(object[key])
counter++;
}
?如果你有一个解析过的 JSON 对象,即一个普通的 JS 对象,你就不必担心可枚举的原型(prototype)属性。
关于javascript - 如何通过索引访问JSON对象中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9768150/