¿Por qué ordenar las claves JSON?
Los objetos JSON son técnicamente desordenados — la especificación (ECMA-404) dice que las implementaciones no están obligadas a preservar el orden de las claves — pero en la práctica la mayoría de los analizadores y serializadores sí preservan el orden de inserción. Esto significa que dos objetos con claves y valores idénticos en diferentes órdenes son semánticamente equivalentes pero textualmente diferentes, lo que crea ruido en los diffs de control de versiones.
Ordenar las claves alfabéticamente antes de confirmar un archivo de configuración, esquema o fixture en el control de código fuente convierte un cambio de reordenamiento sin sentido en una estructura limpia y predecible.
El ordenamiento de claves también es un paso hacia el JSON canónico — una serialización determinista donde dos documentos lógicamente idénticos siempre producen la misma secuencia de bytes. El JSON canónico es útil para firmas criptográficas, caché y fixtures de prueba deterministas.
Ordenamiento profundo vs. ordenamiento superficial
El ordenamiento superficial solo reordena las claves de nivel superior de un objeto JSON. El ordenamiento profundo (recursivo) reordena las claves en cada nivel de anidación — objetos anidados, objetos dentro de arrays. Nuestra herramienta realiza un ordenamiento profundo por defecto.
Los elementos de array nunca se reordenan. Los arrays son colecciones ordenadas y reordenar sus elementos cambiaría la semántica de los datos. El ordenamiento se aplica solo a las claves de objeto, no al contenido de los arrays.
Las claves numéricas (cuyo nombre es un entero) se ordenan alfabéticamente, no numéricamente. Esto significa que "10" viene antes de "9" en un ordenamiento alfabético.
Sensibilidad a mayúsculas y ordenamiento por locale
Por defecto, las claves se ordenan usando el orden estándar de puntos de código Unicode, que distingue mayúsculas de minúsculas: las letras mayúsculas (A–Z) vienen antes que todas las letras minúsculas (a–z). Esto significa que "Zebra" se ordena antes que "apple".
Nuestra herramienta ofrece ambos modos. El ordenamiento insensible a mayúsculas es generalmente más intuitivo para los lectores humanos y es la mejor opción para archivos de configuración que mezclan casos.
El ordenamiento específico por locale no se aplica por defecto, ya que las claves JSON suelen ser identificadores ASCII.