¿Se conserva el orden de los elementos en una lista JSON?

Resuelto user437899 asked hace 13 años • 5 respuestas

He notado que el orden de los elementos en un objeto JSON no es el orden original.

¿Qué pasa con los elementos de las listas JSON? ¿Se mantiene su orden?

user437899 avatar Aug 27 '11 18:08 user437899
Aceptado

Sí, se conserva el orden de los elementos en las matrices JSON. De RFC 7159: formato de intercambio de datos de notación de objetos JavaScript (JSON) (el énfasis es mío):

Un objeto es una colección desordenada de cero o más pares nombre/valor, donde un nombre es una cadena y un valor es una cadena, número, booleano, nulo, objeto o matriz.

Una matriz es una secuencia ordenada de cero o más valores.

Los términos "objeto" y "matriz" provienen de las convenciones de JavaScript.

Algunas implementaciones también conservan el orden de los objetos JSON, pero esto no está garantizado.

Jeremy avatar Aug 27 '2011 11:08 Jeremy

[]Se mantiene el orden de los elementos de una matriz ( ). El orden de los elementos (pares nombre:valor) en un "objeto" ( {}) no lo es, y es habitual que estén "confundidos", si no por el formateador/analizador JSON, entonces por los objetos específicos del lenguaje (Diccionario, NSDictionary, Hashtable, etc) que se utilizan como representación interna.

Hot Licks avatar Aug 27 '2011 11:08 Hot Licks

En la práctica, si las claves fueran del tipo NaN, el navegador no cambiará el orden.

El siguiente script generará "Uno", "Dos", "Tres":

var foo={"3":"Three", "1":"One", "2":"Two"};
for(bar in foo) {
    alert(foo[bar]);
}

Mientras que el siguiente script generará "Tres", "Uno", "Dos":

var foo={"@3":"Three", "@1":"One", "@2":"Two"};
for(bar in foo) {
    alert(foo[bar]);
}
Salam Barbary avatar Jun 27 '2013 08:06 Salam Barbary