从JSON对象动态读取数组值

时间:2012-06-22 16:28:28

标签: javascript arrays

我正在研究一个接受JSON对象作为参数的函数。传入的对象的每个属性都是一个数组。我需要确定每个数组的长度。

我事先不知道的是:属性的名称,或者有多少属性。

如何确定每个阵列的长度?同样,我不能明确地引用任何属性/键,因为我不会提前知道它们的名字。如何将每个未知属性作为数组引用?

提前谢谢你, -RS

2 个答案:

答案 0 :(得分:0)

使用JSON.parse将JSON数据转换为JS对象,然后您可以使用Array的长度等属性。

var myObject = JSON.parse(myJSONtext, reviver);

JSON参考:http://www.json.org/js.html

答案 1 :(得分:0)

您可以使用for...in循环遍历对象以访问每个属性。

for (var key in myObject) {
  // Check to make sure the property is not part of the `Object` prototype (eg. toString)
  if (myObject.hasOwnProperty(key)) {
    console.log(key, myObject[key].length);
  }
}

在上面的例子中,我们迭代对象myObject的属性,然后我们注销它们的长度值(假设它们都是数组)。

如果通过“JSON对象”表示它是一个JSON字符串,您可以先使用myObject = JSON.parse(myObject)(在现代浏览器中工作)或myObject = eval("(" + myOjbect + ")")将myObject解析为真实对象。被认为是不安全的(但适用于所有浏览器)。解析后,您可以使用上述技术来精确数组长度。

注意:由于您更新了帖子以指定对象是JSON,因此您可能不会需要 hasOwnProperty检查,但始终使用此测试会更安全。