Aller au contenu principal
CuteJSON
↑↓ Naviguer Enter Selectionner Esc Fermer

Comment trier les clés JSON pour un diff propre

Publie 2 min de lecture Par Akash Kinkar Pandey

Deux documents qui contiennent les mêmes données dans un ordre de clés différent sont impossibles à comparer avec un diff de texte brut. La configuration écrite à la main et la configuration écrite par un programme ne coincident presque jamais sur l'ordre, et trier les deux de la même manière est ce qui les rend comparables à nouveau.

Utilisation du trieur de clés JSON

Choisissez un ordre, A à Z ou Z à A, une largeur d'indentation, et appuyez Trier les clés. Seules les clés d'objet se déplacent. Un tableau est laissé exactement comme il a été écrit, car l'ordre d'un tableau fait partie des données qu'il contient, pas un accident de la manière dont il a été tapé, et un outil qui réordonnerait silencieusement les tableaux modifierait ce que le document signifie tout en prétendant simplement le ranger.

Tri de

{"item10":"a","item2":"b","Zebra":"c","apple":"d","list":[3,1,2]}

par défaut retourne les clés dans l'ordre exact du code caractère : Zebra avant apple (les lettres majuscules se trient avant les minuscules), et item10 avant item2 ("1" est un caractère plus petit que "2"). Le tableau [3, 1, 2] revient complètement intact.

L'option “Nombres en ordre”

L'ordre par code caractère est la raison pour laquelle item10 se tri avant item2 : la comparaison regarde un caractère à la fois et ne remarque jamais que 10 est plus grand que 2. Activer “Nombres en ordre” lit les suites de chiffres comme des nombres à la place, donc item2 vient correctement avant item10. Ceci est explicitement écrit dans l'outil plutôt que confié à la comparaison sensible à la langue du navigateur, car une comparaison qui suit la langue de la page trierait exactement le même fichier différemment sur la page hindi que sur la page anglaise, et un outil qui range un document doit donner la même réponse peu importe qui l'utilise.

Clés en double

Un document avec une clé en double conserve les deux copies, côté à côté, après le tri. Cet outil ne décide pas laquelle est “correcte” comme le ferait une approche basée sur JSON.parse en ne gardant silencieusement que la dernière ; il trie ce qui est là et laisse la décision sur la doublure à vous, ou au validateur JSON, qui la signalera comme un avertissement.

Pourquoi le tri ne modifie pas vos données

Trie ou non, les valeurs, leurs types et leur texte exact sont identiques. C'est une commodité d'affichage et de comparaison, pas une transformation du sens du document, c'est pourquoi il est sûr de trier un document avant de le comparer dans l'outil JSON diff sans craindre que le tri lui-même n'introduise une différence.

Retour aux articles