Ir al contenido principal
CuteJSON
↑↓ Navegar Enter Seleccionar Esc Cerrar

Como ordenar claves de JSON para un diff limpio

Publicado 2 min de lectura Por Akash Kinkar Pandey

Dos documentos que contienen los mismos datos en un orden de claves diferente son imposibles de comparar con un diff de texto plano. La configuracion escrita a mano y la configuracion escrita por un programa casi nunca coinciden en el orden, y ordenar ambos de la misma manera es lo que los hace comparables de nuevo.

Usando el ordenador de claves de JSON

Elige un orden, A a Z o Z a A, un ancho de indentacion, y presiona Ordenar claves. Solo las claves de objetos se mueven. Un arreglo se deja exactamente como se escribio, porque el orden de un arreglo es parte de los datos que contiene, no un accidente de como se escribio, y una herramienta que silenciosamente reordenara arreglos tambien cambiaria lo que el documento significa mientras afirma solo ordenarlo.

Ordenando

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

por defecto devuelve las claves en orden exacto de codigo de caracteres: Zebra antes de apple (las letras mayusculas se ordenan antes que las minusculas), y item10 antes de item2 ("1" es un caracter mas pequeno que "2"). El arreglo [3, 1, 2] vuelve completamente intacto.

La opcion “Numeros en orden”

El orden por codigo de caracteres es por que item10 se ordena antes de item2: la comparacion mira un caracter a la vez y nunca se da cuenta de que 10 es mayor que 2. Activar “Numeros en orden” lee secuencias de digitos como numeros en su lugar, para que item2 correctamente venga antes de item10. Esto esta escrito explicitamente en la herramienta en lugar de dejarse a la comparacion consciente del idioma del navegador, porque una comparacion que sigue el idioma de la pagina ordenaria exactamente el mismo archivo de manera diferente en la pagina en hindi que en la inglesa, y una herramienta que ordena un documento tiene que dar la misma respuesta sin importar quien la use.

Claves duplicadas

Un documento con una clave duplicada conserva ambas copias, una al lado de la otra, despues de ordenar. Esta herramienta no decide cual es “correcta” de la manera que lo haria un enfoque basado en JSON.parse quedandose silenciosamente solo con la ultima; ordena lo que hay y deja la decision sobre la duplicada a ti, o al validador de JSON, que la marcara como una advertencia.

Por que ordenar no cambia tus datos

Ordenado o no, los valores, sus tipos y su texto exacto son identicos. Esto es una conveniencia de visualizacion y comparacion, no una transformacion del significado del documento, por lo que es seguro ordenar un documento antes de compararlo en la herramienta de diff de JSON sin preocuparse de que el ordenamiento mismo introdujo una diferencia.

Volver a todas las entradas