Как перебирать ключи объекта JSON в ActionScript 3 - PullRequest
1 голос
/ 12 ноября 2009

Я пытаюсь проанализировать JSON в as3, который имеет несколько массивов, как это:

    {
    "a1": [
        {
            "a": 1,
            "b": "2",
            "c": 3 
        },
        {
            "a": 1,
            "b": "2",
            "c": 3 
        } 
    ],
    "a2": [
        {
            "a": 1,
            "b": "2",
            "c": 3 
        },
        {
            "a": 1,
            "b": "2",
            "c": 3 
        } 
    ],
    "a3": [
        {
            "a": 1,
            "b": "2",
            "c": 3 
        },
        {
            "a": 1,
            "b": "2",
            "c": 3 
        } 
    ] 
}

Хотя я и не знаю, как перебирать его, чтобы получить значения из каждого массива. я предполагаю, что использовал бы цикл for и добавил его в конец имени массива «a», но я не уверен, как написать это (если это даже правильный способ приблизиться к нему).

Ответы [ 3 ]

3 голосов
/ 12 ноября 2009

То, что у вас есть, это не просто массивы, а смесь объектов (также называемых хэшами или ассоциативными массивами), а также списки (массивы).

Для итерации как объектов, так и списков вы можете использовать цикл for each:

(при условии, что ваш объект называется data)

// loop parent object
for each (var parent:Object in data)
{
    trace(parent);

    // loop child array
    for each (var child:Object in parent)
    {
        trace(child);

        // loop grandchild object
        for each (var grandchild:Object in child)
        {
            trace(grandchild);
        }
    }
}

Имейте в виду, что этот код не проверен, и вам может потребоваться привести типы Object к более конкретным типам, таким как (Array)Object, чтобы правильно их итерировать.

1 голос
/ 12 ноября 2009

Зачем изобретать велосипед. Существует множество библиотек JSON.

Эта статья может помочь: Майк Чамберс - Использование JSON с Flex 2 и ActionScript 3

0 голосов
/ 12 ноября 2009

вы можете перебрать JSON следующим образом:

for (var parent:Object in json)
{
     for (var child:Object in json[parent] )
     {
          trace(json[parent][child].a);
          trace(json[parent][child].b);
          trace(json[parent][child].c);

     }

}

вы можете использовать "parent" и "child" в качестве ключей для разбора значений

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