AZ Tools

JSON Ordenar Claves

Desarrollo

Reordena las claves de un objeto JSON en orden alfabético, con descenso recursivo opcional en objetos anidados y arrays de objetos. Los arrays mismos quedan en su orden original — solo cambia el orden de claves de objetos. Útil para diffs determinísticos (committear un `package.json` ordenado para que los reviewers vean solo cambios reales), normalizar fixtures de API antes de snapshot testing, o cumplir el orden esperado por una herramienta downstream estricta con el orden de claves.

Ordenado

{
  "author": {
    "email": "demo@example.com",
    "name": "Alice"
  },
  "dependencies": {
    "astro": "^4",
    "react": "^18"
  },
  "name": "demo",
  "scripts": {
    "build": "astro build",
    "dev": "astro dev",
    "test": "vitest"
  },
  "version": "1.0.0"
}

Solo se reordenan claves de objetos. El orden de elementos de array se preserva — ordénalos por separado si lo necesitas.

Cómo usar

  1. Pega tu JSON (un `package.json` o cualquier objeto).
  2. Activa `deep` para ordenar también objetos anidados, o déjalo off para ordenar solo claves de nivel superior.
  3. Elige orden ascendente o descendente y copia el resultado.

Preguntas frecuentes

¿Reordena elementos de arrays?
No — solo claves de objetos. Los arrays mantienen su orden original porque la posición de elementos suele ser significativa. Si también necesitas elementos de array ordenados, ejecuta un paso de ordenamiento dedicado (jq `sort_by`, por ejemplo) primero.
¿Por qué ordenaría `package.json`?
Herramientas como `npm` toleran el orden de claves, pero los humanos no. Ordenar mantiene a los reviewers enfocados en cambios reales (una nueva dependencia) en lugar de churn de `npm install` reshuffling. Algunos equipos lo enforzan con un hook pre-commit `sort-package-json`.
¿El orden es locale-aware?
No — es un orden por code-point con plegado opcional case-insensitive. Coincide con lo que `jq`, `Object.keys().sort()` y la mayoría de stdlibs hacen por default. Colación por locale puede dar resultados distintos para claves no-ASCII, pero raramente es lo que quieres para output canónico.
¿Y JSON5 / comentarios / comas trailing?
Solo JSON estricto — el input debe parsear con `JSON.parse`. Si tienes un archivo config con comentarios, quítalos primero o usa un parser JSON5 antes de pegar.

Herramientas relacionadas