如何通过索引访问JSON对象中的字段
How to access fields in JSON object by index
我知道这不是最好的方法,但我别无选择:(
我必须通过它们的索引来访问JSONObject中的项。访问对象的标准方法是只连接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循环将不起作用。我如何直接访问这个数组?或者它是某种未排序的列表?
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对象,那么您就不必担心可枚举的原型属性。
基于Bergis anserwer,这是我的解决方案:
var keysbyindex = Object.keys(this);
alert(this[keysbyindex[index]]);
return this[keysbyindex[index] || ""];
然而,我认为(未经测试)它的性能非常糟糕,不应该使用!但绝望的时刻需要采取绝望的措施。。。。。
我认为如果不创建自己的JSON解析,您实际上无法实现这一点。您所写的内容是要遍历JSON对象,但实际要做的是遍历一个普通的旧Javascript对象。Json只是一个用于传输/存储所述对象的字符串表示,主要问题在于:将字符串转换为实际对象的解析器(即大多数情况下的浏览器)可以选择忽略它查找属性的顺序。此外,不同的浏览器可能有不同的方法来解析Json。如果他们只是为对象使用哈希映射,那么很容易循环通过它,但顺序不会取决于文件中键的顺序,而是取决于键本身。
例如,如果您有json {"b":"b","a":"a"}
并在循环中执行For,在某些实现中,您可能会首先得到一个compmg,而在其他实现中,可能会得到b。
var jsn = {keyName: 'key value result come here...'};
var arr = jsn ? $.map(jsn, function (el) { return el }) : [0];
console.log(arr[0])
$('.result').text(arr[0]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="result"></span>
- 如何访问对象内部的“categoryIds”字段/键,该对象包含mongodb's `ObjectId(s)`数
- MongoDB-通过比较集合和对象的数组来返回现有字段的数组
- 如何创建具有默认值的JavaScript对象字段?(AngularJS模型相关)
- 如何在angularjs中传递对象字段作为指令参数
- 更新嵌套对象的多个字段
- 创建一个带有可变字段的json对象
- 对象中可选字段的流类型
- 有了字段的名称,我如何用空白数据初始化对象的未定义字段
- FilterHeader不适用于模型字段类型对象
- 访问KendoUI中Datasource过滤对象的字段
- 在jquery中,从同一对象的属性设置输入字段和标签的正确方法是什么
- 如何在初始化过程中引用同一对象内的对象字段
- 如何使用Typescript创建一个包含对象的字段的新对象
- 将一个html表转换为json对象并将其发送到php页面,该表有一个输入字段
- 编码为深度嵌套对象的 HTML 字段 json
- 在 Java 中访问 JavaScript 对象的字段
- Rails的问题,haml + javascript在字段对象的模糊
- 即使对于非空窗体,FormData对象也返回空.对于具有2个输入字段的表单,
- findAndModify,如何对文档进行操作's数组搜索对象并更改字段值
- Rally SDK 2 标签选择器是否有必填字段?对象没有方法'getContextPath'