AS3 Проблема с декодированием данных JSON из PHP - PullRequest
0 голосов
/ 28 апреля 2011

Я могу просто извлечь данные JSON из PHP в мое приложение Flex со следующим фрагментом кода:

public function httpResult(event:ResultEvent):void { 
    var rawData:String = String(event.result);
    trace(String(event.result)); //shows correct order
    var as3Data:Object = JSON.decode(rawData);

    for (var i:* in as3Data)  {
        trace(i + ": " + as3Data[i].unit_price); //shows incorrect order
    }
}

Когда я отслеживаю результат, я вижу информацию, которую я извлекаю в правильном порядке.

{ "100": { "unit_price": "2,9567"}, "400": { "unit_price": "1,0991"}, "800": { "unit_price": "0,7926"}, "1200": {"unit_price": "0.6911"}} {

Но как только я JSON.decode кодирует результат, он каким-то образом переупорядочивает содержимое. И ставит первый элемент последним.

400: 1.0991, 800: 0,7926, 1200: 0,6911, 100: 2,9567

У кого-нибудь есть идеи о том, почему он будет это делать? Или идеи о том, как я могу самостоятельно переупорядочить Объект?

Ответы [ 2 ]

1 голос
/ 28 апреля 2011

Объекты в AS3 не упорядочены. Пары ключ-значение JSON, очевидно, имеют порядок (он есть в тексте!), Но я не думаю, что есть какая-либо гарантия, что он будет сохранен, когда JSON будет либо кодирован, либо декодирован.

Если у вас есть особые требования к оформлению заказа, вам, вероятно, следует создать список с объектами в нем:

[
    {"100":{"unit_price":"2.9567"}},
    {"400":{"unit_price":"1.0991"}},
    {"800":{"unit_price":"0.7926"}},
    {"1200":{"unit_price":"0.6911"}}
]
0 голосов
/ 29 апреля 2011

По большей части Эндрю отвечает правильно, потому что да, объекты в AS3 не упорядочены.Однако я бы не стал создавать список объектов;скорее, я бы создал список ключей, используемых для индексации в объекте JSON.Таким образом, список ключей легко сортировать.

Код, к которому я обращаюсь, выглядит примерно так:

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