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
- Enganxa el JSON al panell esquerre, carrega un exemple o importa un fitxer .json
- Tria el mode d'ordenació de claus o d'arrays i ajusta la direcció i la recursivitat
- Executa l'ordenació i revisa el resultat al panell dret
- 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
pythonimport 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
| Escenari | Ordenar per | Mètode recomanat | Eina |
|---|---|---|---|
| Reduir soroll a Git Diff | Claus d'objecte | Ordenació recursiva de claus | Aquesta eina / jq -S |
| Normalitzar configuració | Claus d'objecte | Ascendent + recursiu | Aquesta eina |
| Estabilitzar la clau de cache API | Claus d'objecte | Ordenar i després stringify | Aquesta eina / codi |
| Endreçar ràpidament un array | Elements de l'array | Mode array | Aquesta eina |
Quan usar sort, diff o merge
| Eina | Objectiu | Què ordena | Pas següent |
|---|---|---|---|
| Ordenar JSON | Unificar l'ordre | Claus / arrays | Diff, format |
| JSON Diff | Comparar canvis | Cap | Millor després d'ordenar |
| JSON Merge | Combinar fonts | Si cal després del merge | Ordenar després de combinar |
| JSON Repair | Reparar JSON invàlid | Cap | Ordenar després de reparar |
Authoritative References
- Comprimir JSON
- CSV a JSON
- JSON a CSV
- JSON Diff
- JSON Escape / Unescape
- Aplanar JSON
- JSON Formatter
- Generador de JSON
- Consulta JSONPath
- Combinar JSON
- Reparació JSON
- Validador d'Esquema JSON
- Ordenar JSON
- JSON Stringify
- JSON a HTML
- JSON a Java
- JSON a Markdown
- JSON a SQL
- JSON a TOML
- JSON a TypeScript
- XML a JSON
- Converteix JSON a XML
- YAML a JSON
- JSON → YAML
- JSON a Python
- JSON a Go
- JSON a Rust
- JSON a Swift
- JSON a C#
- JSON a C++
- JSON a PHP