如何使用JavaScript获取json数据中的数组名称

时间:2015-05-12 00:42:41

标签: javascript arrays json

我有一个JSON对象,它从JavaScript API调用中返回:

{
  "myArray": [
    {
      "version": 5,
      "permissionMask": 1
    },
    {
      "version": 126,
      "permissionMask": 1
    }
  ]
}

如何在JavaScript中访问数组的名称(即myArray)。我需要使用数组的名称来确定以后的流程。

3 个答案:

答案 0 :(得分:3)

Object.keys(data)[0]
# => "myArray"

术语说明:此解决方案假设您有一个JavaScript对象。您可能有一个JSON字符串,在这种情况下,这是解决方案:

Object.keys(JSON.parse(data))[0]
# => "myArray"

然而,在JavaScript中," JSON对象"只是一个 - 我刚刚使用的那个,有JSON.parseJSON.stringify方法。你所拥有的是一个JSON对象,除非是对第二种情况的简单解释,其中JavaScript中的所有值都是对象,包括字符串。

答案 1 :(得分:2)

使用getOwnPropertyNames以数组形式获取对象属性的列表。

示例:

var myObj = {
  "myArray": [
    {
      "version": 5,
      "permissionMask": 1

    },
    {
      "version": 126,
      "permissionMask": 1

    }
  ]
},
names = Object.getOwnPropertyNames(myObj);
alert(names[0]); // alerts "myArray"

注意:如果对象可以有多个属性,例如myArraymyIntmyOtherArray,那么您需要循环覆盖getOwnPropertyNames的结果。您还需要进行类型测试,如if(names[0] instanceof Array) {...}中所示,以检查属性类型。根据你问题中的例子,我没有在这里充实。

答案 2 :(得分:0)

如果您无法控制返回格式,其他答案都很好。

但是,如果可以,我建议更改返回格式,将您关心的重要值作为实际值而不是键,以使其更清晰。例如,像这样:

result = 
{
  "name: "myArray",
  "value": [
    {
      "version": 5,
      "permissionMask": 1
    },
    {
      "version": 126,
      "permissionMask": 1
    }
  ]
}

然后,可靠地访问您关注的财产更加清晰:result.name