100 % local: tus datos nunca salen de tu navegador

Ordenar claves JSON — un diff que se puede leer

Ordena alfabéticamente las claves de un JSON, en todos los niveles. Dos archivos ordenados igual difieren solo en lo que de verdad cambió.

Instantáneo Privado Cero cookies
Indentación

Entrada JSON

Salida JSON

Qué hace esta herramienta

Las claves de cada objeto, a cualquier profundidad, en orden alfabético:

{ "servidor": { "puerto": 8080, "host": "localhost" }, "debug": true }
{
  "debug": true,
  "servidor": {
    "host": "localhost",
    "puerto": 8080
  }
}

Los arrays conservan su orden

Un objeto JSON es un conjunto no ordenado de pares nombre/valor —lo dice la especificación, y ningún analizador promete conservar el orden que escribiste—. Un array es una secuencia, y su orden es un valor.

["migrar", "sembrar", "arrancar"]

Ordenarlo convertiría un procedimiento en una lista de palabras. Por eso los arrays se dejan exactamente como están, en todos los niveles.

El orden es el de los puntos de código

Z va antes que a, y a antes que é. Es el orden de puntos de código Unicode, no el orden alfabético de un idioma concreto.

Es la única elección que da la misma salida en todas las máquinas. Una ordenación sensible a la configuración regional coloca ä junto a a en alemán y después de z en sueco: el mismo archivo volvería distinto según quién ejecutara la herramienta, lo que arruina el uso principal de ordenar, que es comparar dos archivos que se separaron.

Ordenar no es canonicalizar

Un documento ordenado es más fácil de comparar. No es una forma canónica que puedas hashear.

El RFC 8785, el JSON Canonicalization Scheme, fija además cómo se escriben los números y cómo se escapan las cadenas. Esta herramienta no toca ni lo uno ni lo otro a propósito: 1.0 sigue siendo 1.0, y \u00e9 sigue siendo \u00e9. Dos documentos que significan exactamente lo mismo pueden por tanto ordenarse en dos textos distintos.

Si necesitas una huella estable de un valor JSON, usa una implementación de JCS. Si necesitas ver qué cambió entre dos archivos de configuración, ordena los dos y compara.

Privado por diseño

Todo se ejecuta localmente en tu navegador con JavaScript. Tus datos nunca se suben a un servidor, lo que hace que la herramienta sea segura para contenido sensible y funcione sin conexión.

Preguntas frecuentes

¿Por qué no se ordenan mis arrays?
Porque el orden de un array forma parte de su significado. `["read", "write"]` y `["write", "read"]` pueden ser el mismo conjunto para ti y un valor distinto para lo que lea el archivo: pasos de un pipeline, orden de prioridad, una secuencia de migraciones. Las claves de un objeto no llevan orden en el modelo de datos JSON; los elementos de un array sí.
¿Por qué Z va antes que a, y a antes que é?
La ordenación es por punto de código Unicode, no por las reglas de ningún idioma. Es el único orden que da el mismo archivo en todas las máquinas: una colación sensible a la configuración regional ordenaría tus claves de otro modo en Estocolmo y en París, y una ordenación pensada para comparar archivos debe ser reproducible por encima de todo.
¿Ordenar me da una forma canónica que pueda hashear?
No del todo, y el matiz importa. Ordenar las claves es una parte de la canonicalización; el RFC 8785 (JSON Canonicalization Scheme) fija además cómo se escriben los números y cómo se escapan las cadenas. Esta herramienta deja ambas cosas intactas a propósito: dos documentos que solo difieren en `1.0` frente a `1` siguen ordenándose en textos distintos. Usa una implementación de JCS si necesitas un hash.

Convertidores relacionados