Pular para o conteudo principal
CuteJSON
↑↓ Navegar Enter Selecionar Esc Fechar

Como ordenar chaves de JSON para um diff limpo

Publicado 2 min de leitura Por Akash Kinkar Pandey

Dois documentos que contem os mesmos dados em uma ordem de chaves diferente sao impossiveis de comparar com um diff de texto puro. A configuracao escrita a mao e a configuracao escrita por um programa quase nunca concordam na ordem, e ordenar ambos da mesma forma e o que os torna comparaveis novamente.

Usando o ordenador de chaves de JSON

Escolha uma ordem, A a Z ou Z a A, uma largura de indentacao, e pressione Ordenar chaves. Somente chaves de objeto se movem. Um array e deixado exatamente como foi escrito, porque a ordem de um array e parte dos dados que ele contem, nao um acidente de como foi digitado, e uma ferramenta que silenciosamente reordenaria arrays tambem mudaria o que o documento significa enquanto afirma apenas organizar.

Ordenando

{"item10":"a","item2":"b","Zebra":"c","apple":"d","list":[3,1,2]}

por padrao retorna chaves em ordem exata de codigo de caractere: Zebra antes de apple (letras maiusculas se ordenam antes de minusculas), e item10 antes de item2 ("1" e um caractere menor que "2"). O array [3, 1, 2] volta completamente intacto.

A opcao “Numeros em ordem”

A ordem por codigo de caractere e por que item10 se ordena antes de item2: a comparacao olha um caractere por vez e nunca percebe que 10 e maior que 2. Ativar “Numeros em ordem” le sequencias de digitos como numeros ao inves, entao item2 corretamente vem antes de item10. Isto e escrito explicitamente na ferramenta ao inves de delegado a comparacao sensivel a localizacao do navegador, porque uma comparacao que segue o idioma da pagina ordenaria exatamente o mesmo arquivo de forma diferente na pagina em hindi do que na pagina em ingles, e uma ferramenta que organiza um documento tem que dar a mesma resposta nao importa quem a usa.

Chaves duplicadas

Um documento com uma chave duplicada mantem ambas as copias, lado a lado, apos a ordenacao. Esta ferramenta nao decide qual e “correta” da forma que uma abordagem baseada em JSON.parse faria silenciosamente mantendo apenas a ultima; ela ordena o que existe e deixa a decisao sobre a duplicata para voce, ou para o validador de JSON, que a sinalizara como um aviso.

Por que ordenar nao altera seus dados

Ordenado ou nao, os valores, seus tipos e seu texto exato sao identicos. Isto e uma conveniencia de exibicao e comparacao, nao uma transformacao do significado do documento, e por isso e seguro ordenar um documento antes de compará-lo na ferramenta JSON diff sem se preocupar que a propria ordenacao introduziu uma diferenca.

Voltar a todos os posts