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.