Значение индекса массива - PullRequest
6 голосов
/ 20 ноября 2010

У меня есть json-файл с таким содержимым:

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

Теперь я хочу получить значение массива по индексу (например, xxx[0], как это не похоже на xxx['aaa']).Как я могу это сделать?

Ответы [ 7 ]

13 голосов
/ 20 ноября 2010

Вы не можете. Порядок не гарантируется в json и большинстве других структур данных ключ-значение. Кроме того, у вас нет массива, у вас есть объект. Зачем вообще использовать пары имя-значение, если вы не собираетесь использовать names для доступа к значениям? В этом сила json и других хранилищ данных со значением ключа. Если вам нужно для доступа к значениям по целочисленным индексам, просто используйте массив для хранения ваших данных.

9 голосов
/ 20 февраля 2014

На самом деле вы можете использовать int индекс как массив в JSON, просто попробуйте это:

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

alert(jsonObject[0].status)
3 голосов
/ 20 ноября 2010

У вас нет массива, у вас есть объект.Таким образом, вы не можете ожидать, что ключи будут в одинаковом порядке во всех системах.Выполните итерацию объекта, поскольку ожидается, что объекты будут повторяться, то есть по указанным вами ключам.

1 голос
/ 20 ноября 2010

Используйте конструкцию for ... in, а затем используйте синтаксис массива.Вот пример.

for (var key in xxx) {
    document.write(xxx[key]);
}
0 голосов
/ 22 октября 2014

Чтобы дать ответ на заголовок вопроса, вот структура массива, которая будет служить первоначальной цели:

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

Так что просто замените крайние скобки на [], чтобы получить массив вместо объекта. Вот демоверсия . См http://www.json.org/ и http://www.json.com/.

0 голосов
/ 04 августа 2011

Возможно, это решит вашу проблему.

Используя jQuery, вы можете конвертировать JSon в массив и получить к нему доступ по индексу.

var data = $.parseJSON(msg.d ? msg.d : msg);
alert(data[1].status)
0 голосов
/ 20 ноября 2010

Никогда не использовал JSON, но в соответствии с http://labs.adobe.com/technologies/spry/samples/data_region/JSONDataSetSample.html#Example1 возможно создать упорядоченный массив. Просто удалите ключ и двоеточие в ваших парах ключ-значение. (Кто-то, пожалуйста, скажите мне, работает ли это - это может зависеть от значений, определяемых во всех объектах, или может содержать пустые столбцы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...