Notei que a ordem dos elementos em um objeto JSON não é a ordem original.
E os elementos das listas JSON? A ordem deles é mantida?
javascript
arrays
json
list
user437899
fonte
fonte
A ordem dos elementos em uma matriz (
[]
) é mantida. A ordem dos elementos (nome: pares de valores) em um "objeto" ({}
) não é e é comum que sejam "confusos", se não pelo formatador / analisador JSON em si, e pelos objetos específicos do idioma (Dictionary, NSDictionary, Hashtable, etc) que são usados como uma representação interna.fonte
Na prática, se as chaves forem do tipo NaN, o navegador não alterará a ordem.
O script a seguir exibirá "Um", "Dois", "Três":
Enquanto o script a seguir produzirá "Três", "Um", "Dois":
fonte
Alguns mecanismos JavaScript mantêm as chaves em ordem de inserção. A V8, por exemplo, mantém todas as chaves em ordem de inserção, exceto as que podem ser analisadas como números inteiros de 32 bits não assinados .
Isso significa que se você executar um dos seguintes procedimentos:
Você sempre terá cachorro , urso e macaco nessa ordem, no Chrome, que usa a V8. O Node.js também usa a V8. Isso será válido mesmo se você tiver milhares de itens. YMMV com outros mecanismos JavaScript.
Demonstração aqui e aqui .
fonte
"A ordem dos elementos em uma lista JSON é mantida?" não é uma boa pergunta Você precisa perguntar "A ordem dos elementos em uma lista JSON é mantida ao fazer [...]?" Como Felix King apontou, o JSON é um formato de dados textuais. Não muda sem uma razão. Não confunda uma sequência JSON com um objeto (JavaScript).
Você provavelmente está falando sobre operações como
JSON.stringify(JSON.parse(...))
. Agora a resposta é: depende da implementação. 99% * dos analisadores JSON não mantêm a ordem dos objetos e a ordem das matrizes, mas você também pode usar o JSON para armazenar algo comoe use um analisador que mantenha a ordem dos objetos.
* provavelmente ainda mais :)
fonte