我有一个json文件,内容如下:
{
"aaa":{
"status":"available",
"classkey":"dotnet"
},
"bbb":{
"ccc":{
"com":"available",
"net":"available",
"info":"available",
"org":"available"
}
}
}
现在我想通过索引获取数组的值(例如,xxx[0]
,这样不像xxx['aaa']
)。我怎么做?
答案 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/。