Ordenar JSON

Herramienta online gratuita para ordenar JSON. Con un clic ordena claves de objeto alfabéticamente u ordena elementos de array por valor. Conmuta ascendente/descendente y recursión en estructuras anidadas.

Relacionado

¿Qué es Ordenar JSON (JSON Sort)?

Ordenar JSON (JSON Sort) es la reordenación de claves dentro de un objeto JSON según algún orden (lo más común alfabético), o la reordenación de elementos en un array JSON según alguna regla (valor numérico, orden lexicográfico). No cambia ningún valor o tipo de campo, sólo el orden físico — una operación típica de canonicalización que alinea JSON de diferentes fuentes, tiempos y autores en una única forma estructural.

Las 5 razones principales por las que se necesita ordenar JSON en la práctica: ① **Reducir ruido de Git Diff** — diferentes desarrolladores construyen objetos JSON en distintos órdenes, generando enormes diffs sin sentido al hacer commit. Tras unificar el orden de claves, el diff se enfoca en cambios reales. ② **Normalización de configuración** — pipelines CI/CD, centros de configuración y servicios de Feature Flag quieren que las configs de todos los entornos tengan un orden de claves consistente para facilitar auditoría, rollback y diff entre entornos. ③ **Comparación de datos** — pre-ordenar antes de usar una herramienta de JSON Diff elimina diferencias falsas causadas por diferentes órdenes de claves. ④ **Estandarización de respuestas API** — los front-ends que cachean o calculan hash de respuestas quieren un orden de claves estable, para evitar tratar los mismos datos de negocio como claves diferentes por distintos ordenamientos. ⑤ **Legibilidad** — el JSON escrito a mano suele construirse campo a campo por lógica de negocio; ordenarlo lo hace visualmente más ordenado.

A nivel de implementación, el núcleo de ordenar JSON es ordenar cada nivel de claves de objeto con `localeCompare`, y procesar objetos anidados recursivamente. La herramienta Ordenar JSON de GeekFormat tiene dos modos: ① **Ordenar por clave** (por defecto) — sólo reordena claves de objeto alfabéticamente, preservando el orden de elementos del array. ② **Ordenar por elemento de array** — ordena elementos de array por su orden lexicográfico de cadena serializada. También soporta un conmutador de recursión y conmutador ascendente/descendente. Todo el proceso ocurre localmente en el navegador; nada se sube.

Casos de uso

  • Unifica el orden de claves en archivos de configuración JSON del equipo, package.json, tsconfig.json, etc. para reducir ruido de Git Diff
  • Ordena dos JSONs antes de comparar para eliminar diferencias falsas por distintos órdenes de claves, dejando que el diff se enfoque en cambios reales
  • Estandariza el orden de claves de datos de respuesta API para facilitar caché de front-end, almacenamiento IndexedDB y cálculo de hash de objetos
  • Persiste configs del centro de configuración CI/CD, servicio de Feature Flag en orden de claves canónico, para facilitar auditoría y rollback
  • Ordena archivos de configuración JSON grandes o exportaciones de datos — ordenar claves alfabéticamente las hace visualmente más limpias
  • Unifica el orden de claves antes de escribir JSON a base de datos / Redis / cola de mensajes, para garantizar consumo aguas abajo idempotente

Cómo Usar

  1. Pega el contenido JSON a ordenar en la caja de entrada izquierda, o haz clic en "Ejemplo" para cargar un JSON multi-nivel típico, o sube un archivo .json/.txt
  2. Selecciona el modo de orden en la barra de opciones inferior: por defecto "Ordenar por clave"; cambia a "Ordenar por array" si necesitas ordenar elementos de array
  3. Conmuta el botón ascendente / descendente según necesites, marca o desmarca "Recursivo" (activado por defecto)
  4. Haz clic en el botón "Ordenar"; la caja de salida derecha muestra el resultado ordenado formateado. Haz clic en "Copiar" o "Descargar" para guardar como sorted.json

Características

  • Dos modos de ordenación: soporta "Ordenar por clave de objeto" y "Ordenar por elemento de array" como modos centrales, conmutable con un clic
  • Procesamiento recursivo anidado: recursión activada por defecto, descendiendo a objetos anidados multi-nivel para ordenar claves en cada nivel, asegurando estructura consistentemente ordenada
  • Conmutador Ascendente/Descendente: botón integrado ascendente (A-Z) / descendente (Z-A), flexible para hábitos de lectura y requisitos de negocio
  • Orden de diccionario localeCompare: la comparación de claves usa orden de diccionario local, ordenando correctamente chino, caracteres especiales y emoji
  • Preserva estructura de datos: sólo ajusta orden de nombres de claves y elementos de array, no añade ni elimina campos, no modifica tipos de valores
  • Experiencia rápida con datos de muestra: datos demo integrados "zoo + alpha/beta/omega", un clic para cargar y ver el efecto de ordenación
  • Procesamiento local para privacidad: análisis, ordenación y formateo ocurren localmente en el navegador, no se envía entrada a ningún servidor
  • Conexión fluida con herramientas aguas abajo: los resultados ordenados pueden copiarse con un clic a Formatear JSON, Comparar Diff, Validación Schema, etc. para más procesamiento

Ejemplos de Código

Ordenar claves de objeto en JavaScript con Object.keys + sort

javascript
// Orden recursivo de claves, devuelve un nuevo objeto (no modifica el original)
function sortKeysDeep(value) {
  if (Array.isArray(value)) return value.map(sortKeysDeep);
  if (value !== null && typeof value === 'object') {
    return Object.keys(value)
      .sort((a, b) => a.localeCompare(b))
      .reduce((acc, k) => {
        acc[k] = sortKeysDeep(value[k]);
        return acc;
      }, {});
  }
  return value;
}

const data = { zoo: { animals: ['zebra', 'elephant'] }, alpha: 1, beta: 2 };
const sorted = sortKeysDeep(data);
console.log(JSON.stringify(sorted, null, 2));
// => {
//      "alpha": 1,
//      "beta": 2,
//      "zoo": { "animals": ["zebra", "elephant"] }
//    }

Python sort_keys=True + orden de array

python
import json

data = {"zoo": {"animals": ["zebra", "elephant"]}, "alpha": 1, "beta": 2}

# Auto-orden alfabético al serializar con sort_keys
sorted_json = json.dumps(data, indent=2, sort_keys=True, ensure_ascii=False)
print(sorted_json)

# Ordenar array por valor
arr = [3, 1, 4, 1, 5, 9, 2, 6]
print(sorted(arr))          # numérico ascendente
print(sorted(arr, reverse=True))  # descendente

# Orden de diccionario de cadenas
print(sorted(['banana', 'Apple', 'cherry']))  # ['Apple', 'banana', 'cherry']

Ordenar por clave con jq

bash
# Orden recursivo de claves + sangría de 2 espacios
jq -S '.' data.json

# Explicación: -S (--sort-keys) ordena todas las claves de objeto recursivamente en orden ASCII ascendente

# Ordenar array por orden lexicográfico de cadena del elemento (los objetos se comparan por su cadena JSON)
jq 'sort' data.json

# Ordenar array por algún campo (ej. por age ascendente)
jq 'sort_by(.age)' data.json

# Descendente
jq 'sort_by(.age) | reverse' data.json

Preguntas Frecuentes

¿Cuál es la diferencia entre Ordenar JSON y Formatear JSON?

Formatear JSON sólo ajusta sangría, saltos de línea y caracteres de espaciado, sin cambiar el orden de las claves. Ordenar JSON reordena el orden físico de nombres de claves (alfabéticamente) o elementos de array (por valor). Ambos se usan a menudo juntos: primero ordenar para tidy la estructura, luego formatear para hacer el contenido legible — la salida final es el JSON más limpio.

¿El JSON ordenado se hará más grande?

El conteo de bytes es esencialmente el mismo. Ordenar no añade ni elimina campos, sólo reordena nombres de claves, así que el conteo de caracteres serializados es casi el mismo que el original (los caracteres de sangría pueden diferir en 1-2 bytes).

¿Cambia valores de campo o tipos de campo?

No. Esta herramienta es una reordenación puramente estructural: las claves de objeto se reordenan, los elementos de array se reposicionan, los valores y tipos quedan intactos. Las semánticas relativas de `null`, booleanos, números, cadenas, objetos y arrays se preservan todas.

¿Puedo ordenar claves de objeto por valor?

Esta herramienta soporta actualmente dos modos: ① ordenar por nombre de clave de objeto alfabético (el orden de las claves del objeto cambia); ② ordenar elementos de array por valor (los elementos dentro de un array cambian de posición). Si necesitas ordenar elementos de array por algún valor de campo del objeto, primero usa la herramienta JSON Path para extraer ese campo a un array de nivel superior, luego usa el modo de array para ordenar.

¿Qué significa orden recursivo? ¿Debería desactivarlo?

Recursivo = ordenar nombres de claves en cada nivel de objetos anidados. No recursivo = sólo ordenar las claves del objeto de nivel superior; los sub-objetos mantienen su orden original. En la mayoría de escenarios recomendamos mantener la recursión activada para una estructura consistentemente ordenada. Sólo cuando tus objetos internos tienen semántica de orden específica (ej. una "lista de prioridades" en config) desactivarías la recursión.

¿Por qué mis claves enteras se ordenan al frente?

Este es un comportamiento de la spec de JavaScript: cuando las claves de un objeto parecen enteros no negativos (0, 1, 2...), el motor las itera en orden numérico ascendente — las claves enteras aparecen antes que las claves de cadena. La ordenación de esta herramienta preserva ese comportamiento. Si quieres "claves parecidas a enteros también ordenadas en orden de cadena", usa Reparar JSON o un editor para cambiarlas a claves de cadena con comillas como "0", "1".

¿Se pueden ordenar los nombres de clave chinos por Pinyin?

Sí. Bajo el capó esta herramienta usa localeCompare de JavaScript, que ordena según el locale actual del navegador por defecto. En un entorno chino básicamente ordena por Pinyin ascendente, pero el comportamiento exacto varía con el navegador y SO. Para orden Pinyin estricto, usa una librería Node.js que soporte reglas de colación ICU (ej. `natural-orderby`).

¿Cómo ordenar objetos dentro de un array?

El modo de array soporta ordenar los objetos dentro de un array por el "orden lexicográfico de la cadena serializada" — eso significa que los objetos se ordenan por el valor de cadena del primer campo que difiere. Para ordenar por un campo específico (ej. price, date), usa una operación sort-by en la herramienta JSON Path, o en código usa `Array.prototype.sort((a, b) => a.price - b.price)`.

¿Puedo deshacer y restaurar el orden original tras ordenar?

Esta herramienta no mantiene un historial del orden original (por simplicidad). Recomendaciones: ① Copia el original al portapapeles antes de modificar; ② Guarda el original como archivo .json para rollback; ③ Usa git para gestionar originales en producción — `git checkout` cualquier versión histórica cuando lo necesites.

¿Se puede exportar y guardar el resultado ordenado?

Sí. Haz clic en "Descargar" para guardar como sorted.json; o haz clic en "Copiar" para poner el resultado en el portapapeles y pegar en código o documentos. El archivo descargado es JSON estándar, consumible por cualquier editor, IDE o herramienta CI.

¿La herramienta subirá mi JSON a un servidor?

No. Análisis, ordenación y formateo ocurren localmente en el navegador; la entrada y los resultados intermedios no se envían a ningún servidor. Funciona sin conexión, apta para manejar JSON sensible (ej. configs internos, respuestas API no publicadas).

¿Cuál es el mejor orden de uso con JSON Diff y Validación Schema?

Cadena recomendada: ① Reparar JSON (limpiar JSON ilegal) → ② Ordenar JSON (unificar orden de claves) → ③ JSON Diff (comparar basado en resultado ordenado, mínimo ruido de diff) → ④ Formatear JSON (unificar sangría para legibilidad) → ⑤ Validación JSON Schema (restricciones de campos de negocio). Elige los pasos que necesites.

Solución de problemas

Ordenar muestra error "Invalid JSON"

Causa: la entrada no es JSON válido. Solución: primero pega el JSON en la herramienta Reparar JSON para limpiar (auto-maneja comas finales, comillas simples, claves sin comillas, etc.), luego vuelve a esta herramienta; o verifica si te faltaron llaves / corchetes externos.

Las claves enteras se ordenan al frente

Causa: la spec de JavaScript itera claves "parecidas a enteros no negativos" en orden numérico ascendente. Solución: cambia las claves enteras a claves de cadena ("0", "1") antes de ordenar; o acepta este comportamiento como una característica.

Los objetos del array no se ordenaron por mi campo esperado

Causa: el modo de array ordena por el orden lexicográfico de la cadena serializada, con el primer campo que difiere decidiendo el orden final. Solución: usa sort-by en la herramienta JSON Path; o en código usa `arr.sort((a, b) => a.field - b.field)` para personalizar el comparador; esta herramienta se enfoca principalmente en escenarios de ordenación por nombre de clave.

Los nombres de clave chinos no se ordenan como esperaba

Causa: el comportamiento de localeCompare varía ligeramente entre navegadores/SO, y para chino por defecto usa puntos de código Unicode o locale del navegador. Solución: especifica explícitamente el locale en código (ej. `localeCompare('es-ES')`); o cambia a una librería que soporte reglas de colación ICU para orden Pinyin estricto.

Los objetos anidados internos no se ordenaron (sólo el nivel externo)

Causa: "Recursivo" en la barra de opciones inferior no está marcado. Solución: marca el conmutador "Recursivo" (marcado por defecto), re-dispara la ordenación; las claves de los objetos internos también se ordenarán alfabéticamente.

Archivos grandes (10 MB+) hacen que la ordenación se congele

Causa: analizar texto grande con JSON.parse de una sola vez占用 mucha memoria. Solución: mantén la entrada dentro de 1-2 MB; para archivos enormes usa scripts Node.js (`Object.keys(...).sort()`) o Python (`json.dumps(..., sort_keys=True)`) localmente; usa esta herramienta para verificación pequeña después.

Glosario

JSON Sort
Reordenar claves de objeto JSON alfabéticamente o elementos de array por valor; no cambia ningún valor o tipo de campo, sólo el orden físico.
localeCompare
Función de comparación lexicográfica de cadenas integrada en JavaScript que devuelve -1/0/1. Esta herramienta usa localeCompare para ordenar claves, manejando correctamente chino, caracteres especiales y emoji.
ASCII Ascendente / Descendente
Ordenar por puntos de código Unicode de los caracteres (tabla ASCII); mayúsculas A-Z antes que minúsculas a-z, dígitos 0-9 antes que letras.
Orden locale-aware
Orden que respeta las convenciones del lenguaje; para chino por defecto usa puntos de código Unicode o locale del navegador, lo que difiere del orden Pinyin estricto.
Clave tipo entero (Integer-like Key)
Una clave de objeto que parece un entero no negativo (ej. "0", "1", "2"); los motores JavaScript las iteran automáticamente en orden numérico ascendente. Comportamiento de spec, no se puede desactivar.
Orden Recursivo
Ordenar nombres de claves en cada nivel de objetos anidados. Esta herramienta lo activa por defecto; desactivarlo sólo ordena el nivel superior.
Forma Canónica
Forma normalizada; Ordenar JSON es una forma de construir una forma canónica, facilitando diff, hash de caché y consistencia entre entornos.
Ruido de Git Diff
Líneas de diff en code review producidas por diferencias de formato (no cambios lógicos reales); los commits con JSON con claves en distinto orden generan grandes cantidades de diff de ruido.
pre-commit Hook
Script que se ejecuta automáticamente antes de un commit de Git; muchos equipos invocan `jq -S .` en pre-commit para ordenar las claves del archivo JSON antes de add, asegurando orden JSON consistente en el repo.
Herramienta JSON Diff
Herramienta (ej. jsondiffpatch) que compara dos JSONs para encontrar diferencias; se recomienda ordenar ambos lados primero, para eliminar diff falso por orden de claves.

Escenarios y Métodos de Ordenar JSON

EscenarioOrdenar porImplementación recomendadaHerramienta correspondiente
Reducir ruido de Git DiffClave de objeto alfabéticajq -SEsta herramienta / jq
Normalización de centro de configClave de objeto alfabéticajq -SEsta herramienta / jq
Clave de caché de respuesta APIClave de objeto alfabéticaJSON.stringify(sort_keys=True)Esta herramienta / Python json
Fusión de array de API paginadaSin ordenconcatHerramienta Fusionar JSON
Ordenar array por fecha de creaciónElemento .created_atjq 'sort_by(.created_at)'jq sort_by
Ordenar productos por precioElemento .pricelodash _.sortByJS sort((a,b)=>a.price-b.price)

Ordenar JSON vs JSON Diff vs Fusionar JSON

HerramientaQué resuelveDimensión de ordenSuele emparejarse con
Ordenar JSON (esta herramienta)Unificar orden de claves/arrayClaves / elementos de arrayJSON Diff, Fusionar JSON
JSON DiffComparar dos JSONs por diferenciasNinguna (basado en contenido)Ordenar (ordenar primero, luego diff)
Fusionar JSONFusión multi-fuenteOrdenable bajo configOrdenar (normalizar post-fusión)
Reparar JSONConvertir JSON ilegal a válidoNingunaOrdenar (archivar post-reparación)
Validación JSON SchemaValidación de restricciones de campoNingunaPuede validar salida ordenada

Authoritative References