我知道这不是最好的方法,但我别无选择:(
我必须通过索引访问JSONObject中的项目.访问对象的标准方法是wirte this[objectName]或this.objectName.我还找到了一个方法来获取json对象中的所有字段:
(for (var key in p) { 
  if (p.hasOwnProperty(key)) { 
    alert(key + " -> " + p[key]); 
  } 
} 
(Soruce:循环通过Json对象).
但是,无法通过索引直接访问JSON字段.我现在看到的唯一方法是创建一个数组,使用上面的函数,通过索引获取fieldname,然后通过fieldname获取值.
据我所知,p(在我们的例子中,JSON文件必须是可迭代的数组,否则foreach循环将无法工作.如何直接访问此数组?或者它是某种未排序的列表?
JSON对象更像是键值映射; 所以,是的,它是未分类的.唯一的解决方法是你已经提到过的index-> property name map:
var keysbyindex = Object.keys(object);
for (var i=0; i<keysbyindex.length; i++)
    alert(object[keysbyindex[i]]);
但为什么你需要这些索引呢?未排序的映射也没有长度属性,就像Array一样.为什么不使用for-in-loop
var counter = 0; // if you need it
for (var key in object) {
    alert(object[key])
    counter++;
}
?如果你有一个解析的JSON对象,即一个普通的JS对象,你将不必担心可枚举的原型属性.
| 归档时间: | 
 | 
| 查看次数: | 28629 次 | 
| 最近记录: |