Trois modes, un seul espace de travail. Formater, Valider et Comparer partagent le même analyseur et le même éditeur, si bien qu'un document se comporte de la même façon quel que soit le mode qui le lit, et passer de l'un à l'autre ne reformate jamais ce que vous avez collé.
Ce que fait chaque mode
| Mode | Ce qu'il fait |
|---|
| FormaterRéécrit | Réindenter avec deux espaces, quatre espaces ou des tabulations, retirer les blancs à nouveau, ou trier les clés récursivement dans les deux sens. Les valeurs, les échappements et l'Unicode ressortent exactement comme ils sont entrés, et les tableaux gardent leur ordre. |
| ValiderLocalise | Nomme la faute et la désigne, au lieu d'annoncer que le document est invalide et de vous laisser chercher où. |
| ComparerCompare les données | Deux documents comparés sur ce qu'ils signifient, chaque changement étiqueté ajouté, retiré, modifié ou type modifié. |
Les fautes sont localisées, pas seulement signalées
Dix-neuf causes distinctes sont nommées, chacune avec sa ligne, sa colonne et son décalage en octets, et les lignes voisines sont imprimées avec un accent circonflexe sous le caractère. Une virgule avant une accolade fermante, une clé entre apostrophes, un mot nu, un commentaire, un échappement invalide et un caractère de contrôle brut dans une chaîne se lisent comme eux-mêmes plutôt que comme une seule erreur d'analyse générique.
Deux fautes qu'un document valide peut malgré tout porter
Les deux sont signalées sur des documents qui s'analysent proprement, parce que les deux modifient vos données en silence. Une clé en double n'est récupérable par rien : JSON.parse ne garde que la dernière valeur, et tout autre analyseur que vous croiserez fait de même, donc l'avertissement nomme la clé et sa ligne pour que la source soit corrigée. Un entier au-delà de 2^53 change de valeur à l'instant où JavaScript le lit, et c'est ainsi qu'un identifiant 64 bits devient discrètement un autre identifiant.
Ce que la comparaison refuse d'appeler une différence
L'indentation, les fins de ligne et l'ordre d'écriture des clés d'un objet ne portent aucun sens en JSON : ce ne sont donc pas des différences. L'ordre d'un tableau, lui, porte du sens et est comparé comme une séquence, ce qui explique qu'un élément inséré se lise comme une insertion et non comme si tous les éléments suivants avaient changé.
Lire un document trop grand pour être parcouru
- L'arbre s'ouvre un niveau à la fois, si bien qu'un gros fichier ne devient pas une grosse page. Chaque ligne porte le chemin qui y mène, users[4].email, avec un bouton pour copier le chemin ou la valeur.
- Recherche par clé, par valeur ou les deux, avec un compteur de correspondances et un parcours des occurrences.
- Les statistiques apparaissent dès que le document s'analyse : clés, objets, tableaux, chaînes, nombres, booléens, valeurs nulles, profondeur maximale, taille et lignes.
- Conversions vers YAML, vers une interface TypeScript ou vers CSV. Quand un document ne peut pas être un tableau, la voie CSV dit quelle forme il aurait fallu plutôt que de produire quelque chose de trompeur.
Le plafond est de 5 Mio. Au-delà d'environ 300 Kio les couleurs de syntaxe s'éteignent pour que la frappe reste fluide, et sur les très gros documents la comparaison détaillée s'arrête plus tôt et le dit ; la validation et les statistiques continuent sur toute la plage.
Il n'existe pas de point d'API derrière cette page. Le document est analysé dans la mémoire du navigateur et n'atteint jamais un serveur, rien n'est écrit dans le stockage ni dans la barre d'adresse, et la seule chose conservée d'une visite à l'autre est l'indentation choisie.