2012-04-05 7 views
12

I dati che sto inviando la mia pagina sono codificati in JSON, analizzati usando Javascript poi visualizzati in un elemento HTML SELECT usando un ciclo. I dati arrivano già ordinati, ma ho problemi a mantenere l'ordine corretto durante la decodifica della stringa JSON, che annulla l'ordinamento applicato ai dati.Come mantenere l'ordine durante l'analisi di JSON da Javascript?

dati

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

Usando la funzione parser JSON di jQuery e eval di JavaScript(), sto ottenendo i seguenti risultati:

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

Non è possibile modificare il formato dei dati e i tasti ("4", "5", "3") devono rimanere nello stesso ordine. I dati reali sono molto più complessi, ma questo esempio illustra molto bene il mio problema.

Come è possibile mantenere l'ordine dei dati JSON durante l'analisi da Javascript?

+2

Quando si utilizzano le proprietà (oggetto letterale) non si deve dipendere dall'ordine. Solo gli array (sia in JavaScript che in JSON) preservano l'ordine. –

+0

Ciò che mi dà fastidio è che il parser JSON personalizzato su http://json.parser.online.fr/ funziona perfettamente. Purtroppo, non posso modificare il formato dei dati o utilizzerei gli array. :( – Wolf

+1

Dovresti lamentarti con chiunque abbia fatto questi dati che hanno fatto un terribile lavoro di progettazione della rappresentazione JSON Se l'ordine è importante, non si dovrebbe usare un oggetto – Phrogz

risposta

11

Utilizzare un array se si desidera mantenere l'ordine. Questo dovrebbe essere l'unico modo per mantenere l'ordine in javascript.

+1

Non è possibile per modificare il formato dei dati, purtroppo. :( – Wolf

+2

@Wolf Quindi è necessario analizzarli manualmente, mantenendo un array in aggiunta ai dati che memorizzano l'ordine delle proprietà. JavaScript semplicemente non garantisce l'iterazione ordine delle proprietà su un oggetto – Phrogz

+0

@Phrogz Speravo in una soluzione già pronta, ma immagino che il fatto in casa debba essere la strada da percorrere. e, forse qualcuno si inventerà qualcosa. – Wolf

Problemi correlati