Formateur et validateur JSON Pro

Formatez, validez, interrogez, comparez et transformez du JSON — entièrement dans votre navigateur

JSON en entrée

Indentation

Sortie formatée

La sortie formatée apparaîtra ici

Formateur, validateur, JSONPath, diff et schéma JSON — onDevTools

Formatez, validez, interrogez, comparez et transformez du JSON entièrement dans votre navigateur. Parseur strict RFC 8259 et mode JSONC, validation JSON Schema Draft 2020-12, JSONPath RFC 9535, diff profond avec JSON Merge Patch et transformations aplatir / désaplatir / supprimer les nuls — sans téléversement, sans tracking.

Fonctionnalités

  • Mise en forme et minification de JSON avec indentation configurable (2, 4 ou 8 espaces) et tri alphabétique optionnel des clés
  • Parseur strict RFC 8259 / ECMA-404 et mode permissif JSONC qui accepte les commentaires // et /* */ ainsi que les virgules finales
  • Vue arbre interactive et repliable avec recherche plein texte, tout développer/replier et copie par nœud de la valeur ou du chemin JSON Pointer
  • Validateur JSON Schema (Draft 2020-12) signalant les violations de type, required, enum, pattern, min/max, oneOf/anyOf/allOf, additionalProperties et des éléments de tableau, avec les chemins complets de l'instance
  • Moteur de requêtes JSONPath (RFC 9535) prenant en charge les jokers, la descente récursive (..), le découpage de tableaux et les expressions de filtre comme $[?(@.price > 10)]
  • Diff approfondi côte à côte avec segments ajoutés / supprimés / modifiés / inchangés codés par couleur, plus copie ou téléchargement du résultat
  • Pipeline de transformation : aplatir vers la notation pointée, désaplatir, supprimer les nuls, supprimer les chaînes/tableaux/objets vides et enchaîner les opérations
  • Tableau de bord des statistiques JSON : total des éléments, nombre d'objets/tableaux, ventilation par type et profondeur d'imbrication maximale
  • Rapport d'erreurs en ligne avec ligne et colonne du parseur, ainsi que des suggestions pour activer le mode JSONC lorsque l'échec ressemble à un problème de commentaire ou de virgule finale
  • Copie ou téléchargement en un clic pour la sortie formatée, minifiée, le schéma ou le diff
  • S'exécute entièrement côté client — JSON, schémas et entrées de diff ne quittent jamais votre navigateur

Mode d'emploi

  1. Collez ou glissez-déposez votre JSON dans le panneau JSON en entrée — le formatage automatique se déclenche pendant la saisie, ou cliquez sur Formater pour un passage explicite.
  2. Si l'analyse échoue sur un fichier de configuration ou les paramètres de VS Code, activez le commutateur JSONC pour autoriser les commentaires et les virgules finales, puis relancez.
  3. Passez en vue Arbre pour explorer les structures profondément imbriquées ; utilisez le champ de recherche pour mettre en évidence les clés ou valeurs correspondantes, et copiez le chemin ou la valeur de n'importe quel nœud.
  4. Ouvrez l'onglet Validation de schéma, collez un document JSON Schema et cliquez sur Valider — chaque violation indique le mot-clé en échec et le chemin JSON Pointer de la valeur fautive.
  5. Utilisez l'onglet Comparaison diff pour comparer deux documents JSON et copier le patch sous forme de JSON Merge Patch prêt à appliquer ailleurs.
  6. Utilisez l'onglet Requête JSONPath pour extraire ou filtrer des parties du document avec des expressions comme $.store.book[?(@.price < 10)].title.
  7. Utilisez l'onglet Transformations pour aplatir, désaplatir ou supprimer les nuls ; enchaînez les transformations en les relançant sur l'entrée mise à jour, puis copiez ou téléchargez le résultat.

Conseils et bonnes pratiques

  • Activez JSONC dès que vous voyez « Unexpected token / » ou « Unexpected token , » — c'est presque toujours un fichier de configuration avec des commentaires ou une virgule finale.
  • Utilisez Trier les clés avant de committer des fichiers de configuration JSON pour garder les diffs de PR minimaux.
  • Copiez le chemin JSON Pointer depuis la vue arbre pour insérer un lien direct vers un nœud spécifique dans votre rapport de bug ou la description de votre PR.
  • Si un identifiant 64 bits s'affiche comme 1234567890123456800, votre producteur l'émet sous forme de nombre — passez votre API à l'envoi des identifiants sous forme de chaînes.
  • Enchaînez Supprimer les nuls → Minifier → Copier pour produire la charge utile la plus petite possible pour les corps de requêtes HTTP.

FAQ

Stockez-vous mon JSON ?

Non. L'analyse, la validation, les contrôles de schéma, le diff et les transformations s'exécutent tous dans votre navigateur via du JavaScript local et les API Web Crypto / DOM — rien n'est téléversé. Cela permet de coller en toute sécurité des réponses d'API, des fichiers de configuration ou des charges utiles sensibles provenant de systèmes en production.

Quelle spécification JSON le parseur suit-il ?

Le mode strict suit RFC 8259 / ECMA-404, les standards IETF et ECMA pour JSON. Le mode JSONC (activez le commutateur JSONC) ajoute les extensions de commentaires et de virgules finales utilisées par le settings.json de VS Code, tsconfig.json et autres fichiers de configuration similaires. JSON5 (par exemple clés sans guillemets, apostrophes simples, nombres hexadécimaux) n'est pas pris en charge actuellement — utilisez un parseur JSON5 si votre entrée requiert ces formes.

Que prend en charge le validateur JSON Schema ?

La validation s'effectue selon JSON Schema Draft 2020-12 avec une couverture complète de type, required, enum, pattern, format, minimum/maximum, minLength/maxLength, minItems/maxItems, additionalProperties, items, prefixItems, oneOf/anyOf/allOf, $ref et if/then/else conditionnel. Chaque violation signale le mot-clé en échec ainsi que le chemin JSON Pointer vers la valeur fautive, ce qui permet de localiser des problèmes profondément imbriqués sans parcourir l'instance entière.

Quelles expressions JSONPath sont prises en charge ?

Le moteur de requêtes implémente la surface RFC 9535 : racine ($), segment enfant ($.key, $['key']), index et découpage de tableau ([0], [0:3]), jokers ([*]), descente récursive (..) et expressions de filtre avec opérateurs de comparaison, regex et logiques (par exemple $[?(@.price > 10 && @.in_stock == true)]). Les résultats multiples sont renvoyés sous forme de tableau ; les valeurs sont extraites dans l'ordre du document.

Quelle est la différence entre JSONC et JSON5 ?

JSONC est du JSON pur auquel s'ajoutent les commentaires de ligne //, les commentaires de bloc /* */ et les virgules finales — populaire pour les fichiers de configuration édités à la main. JSON5 est un sur-ensemble qui autorise en plus les clés sans guillemets, les chaînes entre apostrophes simples, les nombres hexadécimaux/à virgule décimale initiale et NaN/Infinity. Cet outil prend en charge JSONC ; pour une entrée JSON5, vous devrez la convertir au préalable ou utiliser un parseur JSON5.

Puis-je formater de très gros fichiers JSON ?

Oui, mais la vue arbre et le moteur JSONPath évoluent à peu près linéairement avec le nombre de nœuds, donc au-delà d'environ 1 Mo / 50 000 nœuds, l'interface devient sensiblement plus lente. Pour les charges utiles importantes, utilisez la vue Texte brut au lieu d'Arbre, lancez d'abord la transformation Minifier si vous n'avez besoin que d'une sortie compacte, ou découpez le document par clé de premier niveau. Le streaming et JSON Lines (.jsonl) sont hors périmètre — utilisez une CLI comme jq pour ces cas.

Comment cela se compare-t-il à jq, jsonlint ou au formateur intégré de VS Code ?

jq est imbattable pour les pipelines scriptés et le streaming, et jsonlint couvre la validation stricte. L'avantage de cet outil est de tout faire au même endroit — formatage + validation + vérification de schéma + JSONPath + diff profond + transformations — sans quitter le navigateur. Le formateur intégré de VS Code gère la mise en forme mais pas les chemins d'erreur conscients du schéma, JSONPath, ni le diff/merge.

Pourquoi le parseur affiche-t-il « Unexpected token » sur un fichier de configuration ?

Le parseur est strict par défaut, donc les commentaires //, les blocs /* */ et les virgules finales produisent tous une erreur pointant sur le caractère fautif. Le panneau d'état suggérera automatiquement d'activer le mode JSONC lorsque le motif de l'échec correspond à l'une de ces fonctionnalités. Si le message pointe sur une chaîne entièrement entre guillemets, vérifiez les antislashes non échappés ou les caractères de contrôle — ce sont les autres coupables habituels.

Puis-je personnaliser l'indentation et l'ordre des clés ?

Oui. Choisissez 2, 4 ou 8 espaces dans le contrôle Indentation, et activez Trier les clés pour émettre les clés d'objet par ordre alphabétique — utile pour des diffs stables et des fichiers de configuration reproductibles. La sortie est toujours en UTF-8 avec des lignes séparées par des sauts de ligne (sans BOM) ; le formateur ne réordonne jamais les éléments des tableaux car cela changerait la sémantique.

Quelles opérations de transformation sont disponibles ?

Aplatir convertit {a:{b:1}} en {"a.b":1} pour les outils qui attendent des clés en notation pointée (variables d'environnement, feature flags). Désaplatir l'inverse. Supprimer les nuls élimine récursivement toutes les propriétés à valeur null, Supprimer les vides élimine également les chaînes vides, [] et {}, et Minifier produit une sortie sur une seule ligne. Les transformations s'appliquent à l'entrée actuelle, donc vous pouvez les enchaîner pour composer des pipelines.

L'outil prend-il en charge l'extraction de chemins JSON Pointer ?

Oui. Dans la vue arbre, le survol d'un nœud quelconque révèle son chemin JSON Pointer (RFC 6901) — par exemple /store/book/0/author — que vous pouvez copier en un clic. JSON Pointer est la même notation que celle utilisée par les résultats de schéma et de diff pour identifier les emplacements, vous pouvez donc coller un chemin d'un panneau dans un autre pour naviguer vers la même valeur.

Puis-je partager un résultat formaté avec un coéquipier ?

Le moyen le plus rapide est de coller le JSON sur sa machine — il n'y a pas d'état côté serveur auquel partager un lien. Si vous avez besoin d'un transfert de type lien permanent, utilisez un Gist ou un service de paste avec la sortie minifiée. Évitez de partager des jetons, des secrets ou des données personnelles dans tous les cas, même côté client, car le presse-papiers ou la console du coéquipier qui reçoit peuvent les conserver.

Gère-t-il correctement Unicode et les grands nombres ?

Toute l'entrée est traitée comme de l'UTF-8 et les paires de substitution (emojis, caractères CJC) font l'aller-retour sans échappement. Les nombres au-dessus de Number.MAX_SAFE_INTEGER (2^53 − 1) perdent en précision parce que le parseur sous-jacent utilise des doubles IEEE-754 — c'est une particularité de la spécification JSON, pas une limitation de l'outil. Si vous transportez des identifiants 64 bits, envoyez-les sous forme de chaînes, ce que font la plupart des API.