Trier JSON

Outil gratuit en ligne pour trier JSON. En un clic, organisez les clés d'objet alphabétiquement ou triez les éléments de tableau par valeur. Commutez ascendant/descendant et récursion dans les structures imbriquées.

Recommandations connexes

Qu'est-ce que Trier JSON (JSON Sort) ?

Trier JSON (JSON Sort) est la réorganisation des clés à l'intérieur d'un objet JSON selon un certain ordre (le plus souvent alphabétique), ou la réorganisation des éléments d'un tableau JSON selon une certaine règle (valeur numérique, ordre lexicographique). Cela ne change aucune valeur ou type de champ, seulement l'ordre physique — une opération typique de canonicalisation qui aligne le JSON de différentes sources, époques et auteurs en une forme structurelle unique.

Les 5 raisons principales pour lesquelles trier JSON est nécessaire en pratique : ① **Réduire le bruit de Git Diff** — différents développeurs construisent des objets JSON dans des ordres différents, générant d'énormes diffs sans意义 au commit. Après unification de l'ordre des clés, le diff se concentre sur les vrais changements. ② **Normalisation de configuration** — les pipelines CI/CD, centres de configuration et services Feature Flag veulent que les configs de tous les environnements aient un ordre de clés cohérent pour faciliter l'audit, le rollback et le diff entre environnements. ③ **Comparaison de données** — pré-trier avant d'utiliser un outil de JSON Diff élimine les fausses différences causées par des ordres de clés différents. ④ **Standardisation des réponses API** — les front-ends qui cachent ou hashent les réponses veulent un ordre de clés stable, pour éviter de traiter les mêmes données métier comme des clés différentes en raison d'ordres différents. ⑤ **Lisibilité** — le JSON écrit à la main est souvent construit champ par champ selon la logique métier ; le trier le rend visuellement plus net.

Au niveau de l'implémentation, le cœur du tri JSON est de trier chaque niveau de clés d'objet avec `localeCompare`, et de traiter les objets imbriqués récursivement. L'outil Trier JSON de GeekFormat a deux modes : ① **Trier par clé** (par défaut) — ne réordonne que les clés d'objet alphabétiquement, en préservant l'ordre des éléments du tableau. ② **Trier par élément de tableau** — trie les éléments de tableau par leur ordre lexicographique de chaîne sérialisée. Il supporte aussi un commutateur de récursion et un commutateur ascendant/descendant. L'ensemble du processus se fait localement dans le navigateur ; rien n'est téléchargé.

Cas d'utilisation

  • Unifie l'ordre des clés dans les fichiers de configuration JSON de l'équipe, package.json, tsconfig.json, etc. pour réduire le bruit de Git Diff
  • Trie deux JSONs avant de comparer pour éliminer les fausses différences dues aux ordres de clés différents, laissant le diff se concentrer sur les vrais changements
  • Standardise l'ordre des clés des données de réponse API pour faciliter le cache front-end, le stockage IndexedDB et le calcul de hash d'objet
  • Persiste les configs du centre de configuration CI/CD, service Feature Flag dans l'ordre de clés canonique, pour faciliter l'audit et le rollback
  • Range les grands fichiers de configuration JSON ou exports de données — trier les clés alphabétiquement les rend visuellement plus nets
  • Unifie l'ordre des clés avant d'écrire du JSON dans une base de données / Redis / file de messages, pour garantir une consommation en aval idempotente

Comment utiliser

  1. Collez le contenu JSON à trier dans la zone de saisie gauche, ou cliquez sur « Exemple » pour charger un JSON multi-niveau typique, ou téléchargez un fichier .json/.txt
  2. Sélectionnez le mode de tri dans la barre d'options inférieure : par défaut « Trier par clé » ; passez à « Trier par tableau » si vous avez besoin de trier des éléments de tableau
  3. Commutez le bouton ascendant / descendant selon vos besoins, cochez ou décochez « Récursif » (activé par défaut)
  4. Cliquez sur le bouton « Trier » ; la zone de sortie droite affiche le résultat trié formaté. Cliquez sur « Copier » ou « Télécharger » pour sauvegarder en sorted.json

Fonctionnalités

  • Deux modes de tri : supporte « Trier par clé d'objet » et « Trier par élément de tableau » comme modes centraux, commutable en un clic
  • Traitement récursif imbriqué : récursion activée par défaut, descendant dans les objets imbriqués multi-niveau pour trier les clés à chaque niveau, assurant une structure uniformément nette
  • Commutateur Ascendant/Descendant : bouton intégré ascendant (A-Z) / descendant (Z-A), flexible pour les habitudes de lecture et les exigences métier
  • Ordre de dictionnaire localeCompare : la comparaison des clés utilise l'ordre de dictionnaire local, triant correctement le chinois, les caractères spéciaux et les emoji
  • Préserve la structure des données : n'ajuste que l'ordre des noms de clés et des éléments de tableau, n'ajoute ni ne supprime de champs, ne modifie pas les types de valeurs
  • Expérience rapide avec données d'exemple : données démo intégrées « zoo + alpha/beta/omega », un clic pour charger et voir l'effet de tri
  • Traitement local pour la confidentialité : analyse, tri et formatage se font localement dans le navigateur, aucune entrée envoyée à un serveur
  • Transition transparente vers les outils en aval : les résultats triés peuvent être copiés en un clic vers Formateur JSON, Comparaison Diff, Validateur Schema, etc.

Exemples de code

Tri de clés d'objet en JavaScript avec Object.keys + sort

javascript
// Tri récursif de clés, retourne un nouvel objet (ne modifie pas l'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 + tri de tableau

python
import json

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

# Tri alphabétique automatique à la sérialisation avec sort_keys
sorted_json = json.dumps(data, indent=2, sort_keys=True, ensure_ascii=False)
print(sorted_json)

# Tri de tableau par valeur
arr = [3, 1, 4, 1, 5, 9, 2, 6]
print(sorted(arr))          # numérique ascendant
print(sorted(arr, reverse=True))  # descendant

# Ordre dictionnaire de chaînes
print(sorted(['banana', 'Apple', 'cherry']))  # ['Apple', 'banana', 'cherry']

Trier par clé avec jq

bash
# Tri récursif de clés + indentation 2 espaces
jq -S '.' data.json

# Explication : -S (--sort-keys) trie toutes les clés d'objet récursivement en ordre ASCII ascendant

# Trier tableau par ordre lexicographique de chaîne d'élément (les objets se comparent par leur chaîne JSON)
jq 'sort' data.json

# Trier tableau par un champ (ex. par age ascendant)
jq 'sort_by(.age)' data.json

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

FAQ

Quelle est la différence entre Trier JSON et Formater JSON ?

Formater JSON n'ajuste que l'indentation, les sauts de ligne et les caractères d'espacement, sans changer l'ordre des clés. Trier JSON réorganise l'ordre physique des noms de clés (alphabétiquement) ou des éléments de tableau (par valeur). Les deux sont souvent utilisés ensemble : trier d'abord pour rendre la structure nette, puis formater pour rendre le contenu lisible — la sortie finale est le JSON le plus propre.

Le JSON trié deviendra-t-il plus volumineux ?

Le nombre d'octets est essentiellement inchangé. Le tri n'ajoute ni ne supprime de champs, il réordonne seulement les noms de clés, donc le nombre de caractères sérialisés est presque identique à l'original (les caractères d'indentation peuvent différer de 1-2 octets).

Cela change-t-il les valeurs ou types de champs ?

Non. Cet outil est un réarrangement purement structurel : les clés d'objet sont réorganisées, les éléments de tableau repositionnés, les valeurs et types restent intacts. Les sémantiques relatives de `null`, booléens, nombres, chaînes, objets et tableaux sont toutes préservées.

Puis-je trier les clés d'objet par valeur ?

Cet outil supporte actuellement deux modes : ① trier par nom de clé d'objet alphabétique (l'ordre des clés de l'objet change) ; ② trier les éléments de tableau par valeur (les éléments à l'intérieur d'un tableau changent de position). Si vous avez besoin de trier des éléments de tableau par la valeur d'un champ d'objet, utilisez d'abord l'outil JSON Path pour extraire ce champ dans un tableau de niveau supérieur, puis utilisez le mode tableau pour trier.

Que signifie tri récursif ? Dois-je le désactiver ?

Récursif = trier les noms de clés à chaque niveau d'objets imbriqués. Non récursif = ne trier que les clés de l'objet de niveau supérieur ; les sous-objets conservent leur ordre original. Dans la plupart des scénarios nous recommandons de garder la récursion activée pour une structure uniformément nette. Seulement quand vos objets internes ont une sémantique d'ordre spécifique (ex. une « liste de priorités » en config) désactiveriez-vous la récursion.

Pourquoi mes clés entières sont-elles triées en premier ?

C'est un comportement de la spec JavaScript : quand les clés d'un objet ressemblent à des entiers non négatifs (0, 1, 2...), le moteur les itère en ordre numérique ascendant — les clés entières apparaissent avant les clés chaîne. Le tri de cet outil préserve ce comportement. Si vous voulez « les clés ressemblant à des entiers aussi triées en ordre de chaîne », utilisez Réparer JSON ou un éditeur pour les changer en clés chaîne entre guillemets comme "0", "1".

Les noms de clés chinois peuvent-ils être triés par Pinyin ?

Oui. Sous le capot, cet outil utilise localeCompare de JavaScript, qui trie selon la locale actuelle du navigateur par défaut. Dans un environnement chinois cela trie essentiellement par Pinyin ascendant, mais le comportement exact varie avec le navigateur et l'OS. Pour un tri Pinyin strict, utilisez une librairie Node.js supportant les règles de collation ICU (ex. `natural-orderby`).

Comment trier des objets dans un tableau ?

Le mode tableau supporte le tri des objets à l'intérieur d'un tableau par « l'ordre lexicographique de la chaîne sérialisée » — cela signifie que les objets sont triés par la valeur chaîne du premier champ qui diffère. Pour trier par un champ spécifique (ex. price, date), utilisez une opération sort-by dans l'outil JSON Path, ou en code utilisez `Array.prototype.sort((a, b) => a.price - b.price)`.

Puis-je annuler et restaurer l'ordre original après tri ?

Cet outil ne maintient pas d'historique d'ordre original (pour la simplicité). Recommandations : ① Copiez l'original dans le presse-papiers avant de modifier ; ② Sauvegardez l'original en fichier .json pour rollback ; ③ Utilisez git pour gérer les originaux en production — `git checkout` n'importe quelle version historique au besoin.

Le résultat trié peut-il être exporté et sauvegardé ?

Oui. Cliquez sur « Télécharger » pour sauvegarder en sorted.json ; ou cliquez sur « Copier » pour mettre le résultat dans le presse-papiers et le coller dans du code ou des documents. Le fichier téléchargé est du JSON standard, consommable par tout éditeur, IDE ou outil CI.

L'outil va-t-il télécharger mon JSON sur un serveur ?

Non. Analyse, tri et formatage se font localement dans le navigateur ; l'entrée et les résultats intermédiaires ne sont envoyés à aucun serveur. Fonctionne hors ligne, adapté pour gérer du JSON sensible (ex. configs internes, réponses API non publiées).

Quel est le meilleur ordre d'utilisation avec JSON Diff et Validation Schema ?

Chaîne recommandée : ① Réparer JSON (nettoyer JSON illégal) → ② Trier JSON (unifier l'ordre des clés) → ③ JSON Diff (comparer basé sur résultat trié, bruit de diff minimal) → ④ Formater JSON (unifier l'indentation pour lisibilité) → ⑤ Validation JSON Schema (contraintes de champs métier). Choisissez les étapes dont vous avez besoin.

Dépannage

Le tri affiche l'erreur « Invalid JSON »

Cause : l'entrée n'est pas du JSON valide. Solution : collez d'abord le JSON dans l'outil Réparer JSON pour nettoyer (auto-gestion des virgules finales, guillemets simples, clés sans guillemets, etc.), puis revenez à cet outil ; ou vérifiez s'il vous manque des accolades / crochets externes.

Les clés entières sont triées en premier

Cause : la spec JavaScript itère les clés « ressemblant à des entiers non négatifs » en ordre numérique ascendant. Solution : changez les clés entières en clés chaîne ("0", "1") avant de trier ; ou acceptez ce comportement comme une fonctionnalité.

Les objets du tableau n'ont pas été triés par mon champ attendu

Cause : le mode tableau trie par l'ordre lexicographique de la chaîne sérialisée, le premier champ qui diffère décidant l'ordre final. Solution : utilisez sort-by dans l'outil JSON Path ; ou en code utilisez `arr.sort((a, b) => a.field - b.field)` pour personnaliser le comparateur ; cet outil cible principalement les scénarios de tri par nom de clé.

Les noms de clés chinois ne sont pas triés comme prévu

Cause : le comportement de localeCompare varie légèrement entre navigateurs/OS, et pour le chinois utilise par défaut les points de code Unicode ou la locale du navigateur. Solution : spécifiez explicitement la locale en code (ex. `localeCompare('fr-FR')`) ; ou passez à une librairie supportant les règles de collation ICU pour un tri Pinyin strict.

Les objets imbriqués internes n'ont pas été triés (seul le niveau externe)

Cause : « Récursif » dans la barre d'options inférieure n'est pas coché. Solution : cochez le commutateur « Récursif » (coché par défaut), redéclenchez le tri ; les clés des objets internes seront aussi triées alphabétiquement.

Les gros fichiers (10 Mo+) font que le tri se fige

Cause : analyser un gros texte avec JSON.parse en une fois occupe beaucoup de mémoire. Solution : gardez l'entrée dans 1-2 Mo ; pour les énormes fichiers utilisez des scripts Node.js (`Object.keys(...).sort()`) ou Python (`json.dumps(..., sort_keys=True)`) localement ; utilisez cet outil pour vérification petite ensuite.

Glossaire

JSON Sort
Réordonner les clés d'objet JSON alphabétiquement ou les éléments de tableau par valeur ; ne change aucune valeur ou type de champ, seulement l'ordre physique.
localeCompare
Fonction intégrée de JavaScript de comparaison lexicographique de chaînes retournant -1/0/1. Cet outil utilise localeCompare pour trier les clés, gérant correctement le chinois, les caractères spéciaux et les emoji.
ASCII Ascendant / Descendant
Trier par points de code Unicode des caractères (table ASCII) ; majuscules A-Z avant minuscules a-z, chiffres 0-9 avant lettres.
Tri locale-aware
Tri qui respecte les conventions linguistiques ; pour le chinois, utilise par défaut les points de code Unicode ou la locale du navigateur, ce qui diffère du tri Pinyin strict.
Clé type entier (Integer-like Key)
Une clé d'objet qui ressemble à un entier non négatif (ex. "0", "1", "2") ; les moteurs JavaScript les itèrent automatiquement en ordre numérique ascendant. Comportement de spec, ne peut être désactivé.
Tri Récursif
Trier les noms de clés à chaque niveau d'objets imbriqués. Cet outil l'active par défaut ; le désactiver ne trie que le niveau supérieur.
Forme Canonique
Forme normalisée ; Trier JSON est un moyen de construire une forme canonique, facilitant le diff, le hash de cache et la cohérence entre environnements.
Bruit de Git Diff
Lignes de diff en revue de code produites par des différences de format (pas de vrais changements logiques) ; les commits avec des JSON aux clés dans un ordre différent génèrent de grandes quantités de diff de bruit.
pre-commit Hook
Script exécuté automatiquement avant un commit Git ; beaucoup d'équipes invoquent `jq -S .` en pre-commit pour trier les clés des fichiers JSON avant add, assurant un ordre JSON cohérent dans le repo.
Outil JSON Diff
Outil (ex. jsondiffpatch) qui compare deux JSONs pour trouver des différences ; recommandé de trier les deux côtés d'abord, pour éliminer le faux diff dû à l'ordre des clés.

Scénarios et Méthodes de Tri JSON

ScénarioTrier parImplémentation recommandéeOutil correspondant
Réduire le bruit de Git DiffClé d'objet alphabétiquejq -SCet outil / jq
Normalisation de centre de configClé d'objet alphabétiquejq -SCet outil / jq
Clé de cache de réponse APIClé d'objet alphabétiqueJSON.stringify(sort_keys=True)Cet outil / Python json
Fusion de tableau d'API paginéePas de triconcatOutil Fusionner JSON
Trier tableau par date de créationÉlément .created_atjq 'sort_by(.created_at)'jq sort_by
Trier produits par prixÉlément .pricelodash _.sortByJS sort((a,b)=>a.price-b.price)

Trier JSON vs JSON Diff vs Fusionner JSON

OutilCe qu'il résoutDimension de triHabituellement associé à
Trier JSON (cet outil)Unifier l'ordre des clés/tableauClés / éléments de tableauJSON Diff, Fusionner JSON
JSON DiffComparer deux JSONs pour différencesAucune (basé sur contenu)Trier (trier d'abord, puis diff)
Fusionner JSONFusion multi-sourceTriable selon configTrier (normaliser post-fusion)
Réparer JSONConvertir JSON illégal en valideAucuneTrier (archiver post-réparation)
Validation JSON SchemaValidation de contraintes de champsAucunePeut valider la sortie triée

Authoritative References