Array的索引值

时间:2010-11-20 05:06:29

标签: json

我有一个json文件,内容如下:

{
     "aaa":{
         "status":"available",
         "classkey":"dotnet"
     },
     "bbb":{
         "ccc":{
             "com":"available",
             "net":"available",
             "info":"available",
             "org":"available"
          }
     }
}

现在我想通过索引获取数组的值(例如,xxx[0],这样不像xxx['aaa'])。我怎么做?

7 个答案:

答案 0 :(得分:13)

你做不到。在json和大多数其他键值数据结构中无法保证顺序。此外,你没有数组,你有一个对象。如果您不打算使用名称来访问值,为什么要使用名称 - 值对?其中包括json和其他键值数据存储的强大功能。如果需要通过整数索引访问值,则只需使用数组来存储数据。

答案 1 :(得分:9)

实际上你可以像JSON中的数组一样使用int索引,只需尝试:

var jsonObject = {
     "0":{
         "status":"available",
         "classkey":"dotnet"
     },
     "1":{
         "ccc":{
             "com":"available",
             "net":"available",
             "info":"available",
             "org":"available"
          }
     }
}

alert(jsonObject[0].status)

答案 2 :(得分:3)

你没有数组,你有一个对象。因此,您不能指望密钥在所有系统上的顺序相同。迭代对象,因为期望对象被迭代,即通过给定的键。

答案 3 :(得分:1)

使用for ... in构造,然后使用数组语法。这是一个例子。

for (var key in xxx) {
    document.write(xxx[key]);
}

答案 4 :(得分:0)

从未使用过JSON,但根据http://labs.adobe.com/technologies/spry/samples/data_region/JSONDataSetSample.html#Example1,可以创建一个有序数组。只需删除键值对中的键和冒号即可。 (有人请告诉我这是否有效 - 它可能取决于在所有对象中定义的值,或者它可能允许空列。)

答案 5 :(得分:0)

也许这可以解决您的问题。

使用jQuery,您可以将JSon转换为Array并通过索引访问它。

var data = $.parseJSON(msg.d ? msg.d : msg);
alert(data[1].status)

答案 6 :(得分:0)

为了提供问题标题的答案,这里是用于原始目的的数组结构:

[
     {
         "status":"available",
         "classkey":"dotnet"
     },
     {
         "ccc":{
             "com":"available",
             "net":"available",
             "info":"available",
             "org":"available"
          }
     }
]

所以只需用[]替换最外面的括号来获取数组而不是对象。这是一个demo。请参阅http://www.json.org/http://www.json.com/