Aussi disponible en : English · Español · Português · العربية
Formater du JSON en ligne, sans rien envoyer
Un formateur et validateur JSON qui tourne entièrement dans votre navigateur, avec son propre parser plutôt que celui du navigateur.
Qu’est-ce qu’un formateur JSON ?
Formater du JSON, c’est prendre un document JSON — compact, mal indenté, ou simplement collé tel quel depuis les logs d’une API — et le réécrire avec une indentation cohérente, des sauts de ligne aux bons endroits, et éventuellement les clés triées. Un bon formateur va plus loin que la mise en forme : il valide aussi la syntaxe au passage, puisque du JSON mal formé ne peut techniquement pas être formaté, seulement rafistolé jusqu’à ce qu’il redevienne valide.
Ce genre d’outil sert surtout dans deux situations : relire une réponse d’API renvoyée sur une seule ligne interminable, ou nettoyer un fichier de configuration avant de le committer. Dans les deux cas, la mise en forme n’est qu’une moitié du travail — l’autre moitié, plus discrète, consiste à repérer ce qui cloche avant que ça ne casse un pipeline en aval. C’est cette seconde moitié que la plupart des formateurs en ligne bâclent, et c’est ce que celui-ci essaie de faire correctement.
Comment ça marche
- Collez votre JSON dans la grande zone de texte : la validation et le reformatage se déclenchent à chaque frappe, sans bouton « Valider » à cliquer.
- Choisissez l’indentation 2 espaces, 4 espaces, tabulation ou minifier, et cochez éventuellement « Trier les clés par ordre alphabétique » — décochée par défaut, parce que l’ordre des clés compte parfois pour la relecture de code.
- Récupérez le résultat dans la zone de sortie en lecture seule, copiable en un clic (le bouton affiche « Copié ! » pendant deux secondes), ou effacez tout et repartez d’un exemple chargé automatiquement. Une ligne d’état dit si le document est valide, avec les avertissements et les statistiques qui vont avec.
Pourquoi un parser maison plutôt que JSON.parse
Presque tous les formateurs JSON en ligne font la même chose en coulisses : ils appellent JSON.parse, puis JSON.stringify. Ça marche dans la grande majorité des cas — mais ça repasse chaque nombre du document par un double JavaScript, qui ne retient au mieux que 17 chiffres significatifs. Pour un identifiant, un montant, ou n’importe quelle valeur qui dépasse cette précision, le JSON formaté n’est plus le JSON que vous avez collé. Cet outil n’utilise pas JSON.parse : il a son propre parser, écrit spécifiquement pour cette page, qui garde le texte d’origine de chaque nombre et le réémet chiffre pour chiffre.
La différence se mesure facilement. Un document contenant l’identifiant 12345678901234567890 passe, une fois repris par un formateur classique, à 12345678901234567000 — les trois derniers chiffres ont changé sans le moindre avertissement. Un prix noté 0.1000000000000000055511151231257827 devient tout simplement 0.1. Ici, formater n’altère jamais une valeur : les chiffres qui entrent sont les chiffres qui sortent. Et quand un nombre dépasse ce qu’un double peut représenter exactement, l’outil le signale un par un dans un avertissement séparé — parce que préserver ces chiffres sur cette page ne les rend pas sûrs partout : la prochaine application qui appellera JSON.parse sur votre JSON les modifiera quand même.
Le même problème silencieux existe avec les clés répétées. Un objet qui définit deux fois la même clé, une fois avec une valeur, une fois avec une autre, est du JSON syntaxiquement valide, et JSON.parse ne garde que la dernière occurrence sans rien dire : la première valeur disparaît purement et simplement. Cet outil signale chaque répétition avec son numéro de ligne et conserve les deux entrées dans la sortie — à vous de décider laquelle est la bonne. Ce genre de garantie a un coût : le parsing tourne sur le thread principal de la page, donc un fichier de plusieurs mégaoctets figera l’onglet le temps du traitement, et trier les clés reste une opération qui réécrit un ordre que la spécification JSON ne garantit pourtant pas — d’où la case décochée par défaut.
Des messages d’erreur qui nomment la faute
Il faut être honnête sur ce point : les parsers JSON natifs se sont nettement améliorés. Sur un document contenant une virgule en trop juste avant l’accolade fermante, Chrome et Node récents répondent désormais par un message qui donne une vraie position — ligne 1, colonne 9 sur un cas de ce type — plutôt qu’un texte vague. Mais deux lacunes subsistent. D’abord, ce n’est pas systématique : remplacez la valeur par un True à la façon Python, et le même moteur se contente d’un jeton inattendu, sans la moindre ligne ni colonne. Ensuite, même quand la position est là, le message décrit ce que le parser attendait à cet endroit — pas ce que vous avez réellement tapé.
Cet outil nomme la faute elle-même plutôt que l’attente déçue du parser : une virgule en trop, des guillemets simples au lieu de doubles, une clé sans guillemets, les True, False et None de Python collés dans du JSON par réflexe, un commentaire, un zéro initial, un retour à la ligne littéral dans une chaîne — 18 types d’erreur distincts au total, chacun avec sa ligne, sa colonne et la ligne source affichée avec un curseur sous la colonne exacte. Et il pointe le bon caractère : sur un document de test de 4 lignes contenant une virgule en trop, l’erreur désigne la ligne 3, colonne 12 — la virgule elle-même, pas l’accolade fermante où un parser classique s’en aperçoit.
Ce parser a été confronté au parser natif du navigateur sur 20 000 documents générés pour l’occasion, dont 13 323 volontairement corrompus par insertion, suppression ou remplacement d’un caractère au hasard. Résultat : accord total sur la validité de chaque document, zéro divergence, et tout document accepté par les deux se reformate en quelque chose qui se reparse en une valeur identique. Le formatage est idempotent — formater deux fois ne bouge rien, les objets et tableaux vides restent compacts sur une seule ligne plutôt que d’être étalés sur trois — et reste strictement du JSON : les commentaires et les virgules en trop sont signalés comme des erreurs, jamais acceptés en douce, même si l’outil vous dira toujours exactement quelle ligne corriger.
Pourquoi c’est gratuit
Tout se passe dans votre navigateur : le parsing, la validation, le formatage. Rien n’est envoyé à un serveur, ce qui compte particulièrement ici, puisque ce qu’on colle dans un formateur JSON, ce sont justement des choses qu’on ne voudrait pas laisser traîner ailleurs — des clés d’API, des identifiants internes, des configurations de production.
FreeToGenerate.com ne demande pas de compte, n’affiche pas de filigrane sur ce que vous copiez, et ne réserve aucune fonctionnalité derrière une version payante. Cet outil, comme les autres sur le site, est gratuit parce qu’il n’a besoin d’aucune infrastructure côté serveur pour fonctionner — juste votre navigateur et le JavaScript qu’il exécute déjà.