Pourquoi trier les clés JSON ?
Les objets JSON sont techniquement non ordonnés — la spécification (ECMA-404) indique que les implémentations ne sont pas tenues de préserver l'ordre des clés — mais en pratique la plupart des analyseurs et des sérialiseurs préservent l'ordre d'insertion. Cela signifie que deux objets avec des clés et des valeurs identiques dans des ordres différents sont sémantiquement équivalents mais textuellement différents, ce qui crée du bruit dans les diffs de contrôle de version.
Trier les clés alphabétiquement avant de valider un fichier de configuration, un schéma ou une fixture dans le contrôle de source transforme un changement de réorganisation sans signification en une structure propre et prévisible. Un développeur qui ajoute une nouvelle clé et trie à nouveau produira un diff minimal — seule la nouvelle clé apparaît comme ajoutée.
Le tri des clés est également une étape vers le JSON canonique — une sérialisation déterministe où deux documents logiquement identiques produisent toujours la même séquence d'octets. Le JSON canonique est utile pour les signatures cryptographiques, la mise en cache et les fixtures de test déterministes.
Tri en profondeur vs. tri superficiel
Le tri superficiel ne réordonne que les clés de premier niveau d'un objet JSON. Le tri en profondeur (récursif) réordonne les clés à chaque niveau d'imbrication — objets imbriqués, objets dans les tableaux. Notre outil effectue un tri en profondeur par défaut.
Les éléments de tableau ne sont jamais réordonnés. Les tableaux sont des collections ordonnées et la réorganisation de leurs éléments changerait la sémantique des données. Le tri s'applique uniquement aux clés d'objet, pas au contenu des tableaux.
Les clés numériques (dont les noms sont des entiers) sont triées alphabétiquement, pas numériquement. Cela signifie que "10" vient avant "9" dans un tri alphabétique.
Sensibilité à la casse et tri par locale
Par défaut, les clés sont triées en utilisant l'ordre standard des points de code Unicode, qui est sensible à la casse : les lettres majuscules (A–Z) viennent avant toutes les lettres minuscules (a–z). Cela signifie que "Zebra" est trié avant "apple".
Notre outil offre les deux modes. Le tri insensible à la casse est généralement plus intuitif pour les lecteurs humains et est le meilleur choix pour les fichiers de configuration qui mélangent les casses.
Notez que le tri spécifique à la locale (où des caractères spécifiques à une langue comme ä, ñ, é sont triés correctement) n'est pas appliqué par défaut, car les clés JSON sont généralement des identifiants ASCII.