Ordenar JSON

Organitza les claus dels objectes JSON i els elements dels arrays perquè les dades siguin més fàcils de llegir, comparar i guardar de manera consistent. Tot es processa localment al navegador.

Relacionats

Què és l'ordenació JSON?

Ordenar JSON significa tornar a col·locar les claus d'un objecte segons un ordre determinat o reordenar els elements d'un array segons el seu valor. L'operació no canvia les dades ni els tipus, només la seva posició.

Aquesta normalització ajuda a reduir soroll al Git Diff, unificar fitxers de configuració, preparar dades abans d'un JSON Diff i estabilitzar claus de memòria cau en respostes API. El mateix JSON no sembla canviat només perquè les claus estiguin en un altre ordre.

L'eina de GeekFormat ofereix dos modes: ordenació de claus i ordenació d'arrays, a més de canvi ascendent/descendent i processament recursiu. Les dades no s'envien al servidor.

Casos d'ús

  • Unificar l'ordre de les claus a package.json, tsconfig.json i altres fitxers de configuració
  • Ordenar dos JSON abans de comparar-los per eliminar diferències falses causades només per l'ordre
  • Estabilitzar l'ordre de les claus en respostes API per a cache, hash i snapshots
  • Endreçar fitxers JSON grans abans d'una code review o una auditoria de configuració
  • Preparar la sortida després d'un merge o d'un repair abans de la validació següent

Com usar-ho

  1. Enganxa el JSON al panell esquerre, carrega un exemple o importa un fitxer .json
  2. Tria el mode d'ordenació de claus o d'arrays i ajusta la direcció i la recursivitat
  3. Executa l'ordenació i revisa el resultat al panell dret
  4. Copia el resultat o descarrega'l com a sorted.json

Característiques

  • Dos modes: pots ordenar claus d'objecte o elements d'array
  • Suport recursiu: també ajusta l'ordre dins dels objectes imbricats
  • Ascendent i descendent: canvia la direcció de l'ordenació amb facilitat
  • Estructura intacta: valors i tipus no es modifiquen
  • Processament local: el JSON no surt del navegador
  • Fàcil de continuar: el resultat es pot passar directament a JSON Diff, Repair o Format

Exemples de codi

Ordenar claus recursivament amb JavaScript

javascript
// Ordena les claus recursivament i retorna un objecte nou
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 };
console.log(JSON.stringify(sortKeysDeep(data), null, 2));

Fer servir sort_keys=True a Python

python
import json

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

print(json.dumps(data, indent=2, sort_keys=True, ensure_ascii=False))

arr = [3, 1, 4, 1, 5]
print(sorted(arr))
print(sorted(arr, reverse=True))

Ordenar JSON amb jq

bash
# Ordena les claus recursivament
jq -S '.' data.json

# Ordena els elements d'un array
jq 'sort' data.json

# Ordena per un camp concret
jq 'sort_by(.age)' data.json

Preguntes freqients

Quina diferència hi ha entre ordenar JSON i formatar JSON?

Formatar només canvia sagnat i salts de línia, mentre que ordenar JSON canvia l'ordre de les claus i dels elements d'un array. Fer servir totes dues coses dona un JSON net i coherent.

El JSON ocuparà més espai després d'ordenar-lo?

Pràcticament no. La quantitat de dades és la mateixa; només canvia l'ordre dels camps i elements.

Canvien els valors o els tipus de dades?

No. `null`, nombres, cadenes, booleans, objectes i arrays es conserven exactament igual.

Què vol dir ordenació recursiva?

Vol dir que l'ordenació s'aplica no només a l'objecte de nivell superior, sinó també a tots els objectes interns. En configuracions i respostes API sol ser recomanable deixar-la activada.

Per què les claus numèriques apareixen primer?

JavaScript tracta claus com `0`, `1` o `2` en ordre numèric. És un comportament de la plataforma, no un error de l'eina.

Com s'ordenen els objectes dins d'un array?

El mode array fa una comparació general sobre la representació textual. Si vols ordenar per un camp concret com `price` o `date`, és millor fer servir `sort_by(.field)`.

El meu JSON s'envia al servidor?

No. Totes les operacions es fan localment al navegador, així que també és adequat per a dades sensibles.

Quin ordre és millor si també faig servir JSON Diff o Schema?

Normalment és útil seguir aquest flux: JSON Repair → ordenar JSON → JSON Diff / Format → validació Schema. Ordenar abans redueix el soroll de comparació.

Solució de problemes

Apareix l'error Invalid JSON

Probablement hi ha un error de sintaxi al JSON d'entrada. Comprova'l primer amb JSON Repair o JSON Format.

Les claus numèriques sempre queden a dalt

JavaScript tracta les claus semblants a enters en ordre numèric. És un comportament de la plataforma, no un error de l'eina.

Els objectes dins de l'array no queden en l'ordre esperat

El mode array no entén el significat de cada camp i fa una comparació general. Per camps com `price` o `date`, fes servir `sort_by`.

Els objectes imbricats no s'ordenen

Assegura't que l'opció recursiva estigui activada. Si no ho està, només s'ordena el nivell superior.

Un JSON molt gran alenteix el navegador

Els fitxers grans convé processar-los abans amb `jq`, Python o Node.js i després validar el resultat final al navegador.

Glossari

JSON Sort
Operació que només canvia l'ordre de claus o elements d'array sense tocar valors ni tipus.
Recursive Sort
Ordenació aplicada no sols al nivell superior, sinó també a tots els objectes imbricats.
Ascending / Descending
Ascendent vol dir A-Z o de menor a major; descendent és el contrari.
Canonical Form
Representació JSON normalitzada, útil per comparar, fer cache o calcular hash.
Git Diff Noise
Línies de diff innecessàries causades per ordre o format, no per canvis reals de dades.
localeCompare
API de JavaScript per comparar cadenes, sovint utilitzada per ordenar noms de claus.

Escenaris habituals per ordenar JSON

EscenariOrdenar perMètode recomanatEina
Reduir soroll a Git DiffClaus d'objecteOrdenació recursiva de clausAquesta eina / jq -S
Normalitzar configuracióClaus d'objecteAscendent + recursiuAquesta eina
Estabilitzar la clau de cache APIClaus d'objecteOrdenar i després stringifyAquesta eina / codi
Endreçar ràpidament un arrayElements de l'arrayMode arrayAquesta eina

Quan usar sort, diff o merge

EinaObjectiuQuè ordenaPas següent
Ordenar JSONUnificar l'ordreClaus / arraysDiff, format
JSON DiffComparar canvisCapMillor després d'ordenar
JSON MergeCombinar fontsSi cal després del mergeOrdenar després de combinar
JSON RepairReparar JSON invàlidCapOrdenar després de reparar

Authoritative References