2012-04-05 19 views
12

Dane, które wysyłam, są kodowane w JSON, przetwarzane przy użyciu Javascript, a następnie wyświetlane w elemencie HTML SELECT za pomocą pętli. Dane przychodzą już posortowane, ale mam problemy z zachowaniem prawidłowej kolejności podczas dekodowania łańcucha JSON, co unieważnia sortowanie zastosowane na danych.Jak zachować porządek podczas analizowania JSON z JavaScript?

Dane

Próbka: {"test":{"4":"first","5":"second","3":"third"}}

Korzystanie JSON parser jQuery i eval Javascript w() funkcji, otrzymuję następujące wyniki:

{"test":{"3":"third","4":"first","5":"second"}}

nie jest możliwe, aby zmodyfikować format danych a klawisze ("4", "5", "3") muszą pozostać w tej samej kolejności. Rzeczywiste dane są znacznie bardziej złożone, ale ten przykład bardzo dobrze ilustruje mój problem.

Jak zachować kolejność danych JSON podczas analizowania kodu JavaScript?

+2

Podczas korzystania z właściwości (literał obiektowy) nie należy polegać na zamówieniu. Tylko tablice (zarówno w JavaScript, jak iw JSON) zachowują porządek. –

+0

Co mnie martwi to, że niestandardowy parser JSON na http://json.parser.online.fr/ działa dobrze. Niestety, nie mogę zmienić formatu danych lub używałbym tablic. :( – Wolf

+1

Powinieneś złożyć skargę do tych, którzy zrobili te dane, że zrobili straszną robotę projektowania reprezentacji JSON.Jeżeli porządek jest ważny obiekt nie powinien być używany – Phrogz

Odpowiedz

11

Użyj tablicy, jeśli chcesz zachować zamówienie. To powinien być jedyny sposób na utrzymanie porządku w javascript.

+1

To niemożliwe aby zmienić format danych, niestety. :( – Wolf

+2

@Wolf Następnie musisz ręcznie przetworzyć go, zachowując tablicę oprócz danych przechowujących kolejność właściwości. JavaScript po prostu nie gwarantuje iteracji kolejność właściwości na obiekcie – Phrogz

+0

@Phrogz Miałem nadzieję na gotowe rozwiązanie, ale domyślam się, że domowa droga będzie musiała być właściwa. e, może ktoś coś wymyśli. – Wolf

Powiązane problemy