Aller au contenu
jsonbeautifiers
Français

À propos

Chaque outil ici est une vue sur un unique analyseur JSON, écrit de zéro plutôt qu’enveloppé autour de JSON.parse. Cette décision est la raison d’être du site.

Pourquoi écrire un analyseur

Envelopper l’analyseur intégré est le geste évident, et presque tous les outils JSON en ligne le font. Cela vous donne la validation gratuitement. Cela vous donne aussi trois problèmes qu’on ne peut pas corriger de l’extérieur.

Les erreurs sont inutilisables. Un analyseur intégré signale un problème et s’arrête. Il vous donne un message écrit pour un compilateur, aucune suggestion de ce qu’il faut faire, et dans plusieurs runtimes aucun numéro de ligne. Qui tient un payload cassé a besoin du caractère exact, de ce qui était attendu là, et du correctif. L’obtenir suppose de posséder le balayage.

Il réécrit vos données. Analysez 12345678901234567890, re-sérialisez, et vous obtenez 12345678901234567000. Rien ne vous prévient. Un formateur bâti ainsi a modifié votre payload avant d’avoir rien imprimé, et pour un identifiant ou un montant c’est un bug sérieux qui n’a l’air de rien. Notre formateur réémet le texte source de chaque nombre, donc cela ne peut pas arriver. L’explication complète est ici.

Il ne peut rien pour une entrée qui est presque du JSON. Virgules finales, apostrophes, littéraux Python, commentaires, une espace insécable collée depuis un client de messagerie. Pour corriger cela et expliquer ce qui a changé, il faut le détecter précisément, ce qui suppose de nouveau de posséder le balayage.

Ce que cela a rapporté

  • Des erreurs avec une ligne, une colonne, une plage surlignée, ce qui était attendu, et un correctif.
  • Toutes les erreurs d’un document signalées d’un coup, plutôt qu’une par tentative.
  • Des nombres qui survivent au formatage exactement tels que vous les avez collés.
  • Des clés dupliquées signalées avec la position des deux.
  • Des caractères invisibles nommés avec précision. Une espace insécable est signalée comme espace insécable ligne 4, colonne 12, et non comme un jeton inattendu.
  • Un mode réparation qui corrige le presque-JSON et liste chaque modification, en séparant les jugements des corrections sûres.
  • Un analyseur itératif, donc la profondeur d’imbrication est limitée par la mémoire et non par la pile d’appels.

Ici la confidentialité est une décision technique, pas une décision marketing

En novembre 2025, deux des plus grands formateurs JSON en ligne ont laissé fuiter plus de 80 000 collages enregistrés, environ 5 Go accumulés en cinq ans. Les données exposées comprenaient des identifiants Active Directory, des clés d’accès cloud, des jetons d’accès personnels et des relevés bancaires appartenant à des organisations publiques, hospitalières et aérospatiales.

Le détail instructif n’est pas la fuite. C’est que l’un de ces sites vous dit, sur sa page d’accueil, que vos données sont validées dans le navigateur, alors que son bouton d’envoi de fichier poste votre fichier sur un serveur. Les deux affirmations étaient vraies à propos de fonctionnalités différentes, et personne lisant la page ne pouvait dire laquelle était laquelle.

Ce site ne vous demande donc pas de faire confiance à une phrase. Chaque page est servie avec une liste d’autorisation connect-src qui ne nomme qu’une destination, le point de collecte analytique qui compte les pages vues. Il n’y a pas de point d’envoi, pas de chargement depuis une URL, pas de liens enregistrés, pas de comptes et pas de publicité, car chacun de ces éléments exigerait une exception assez large pour emporter votre payload. Voici comment tout vérifier vous-même.

Comment c’est construit

  • Des pages statiques, construites avec Astro. Pas de rendu côté serveur et pas d’API.
  • L’analyseur, le formateur, le moteur de réparation, l’écrivain CSV, l’analyseur XML, le diff et le moteur JSONPath sont tous écrits pour ce site, et couverts par une suite de tests exécutée à chaque build.
  • CodeMirror 6 pour l’éditeur, chargé paresseusement derrière un simple textarea qui fonctionne seul. Monaco aurait pesé environ 5 Mo.
  • js-yaml est l’unique dépendance tierce à l’exécution, chargée seulement sur les deux pages YAML. YAML 1.2 est assez vaste pour qu’une implémentation partielle accepte des documents et produise silencieusement de mauvaises valeurs, c’est-à-dire précisément le mode de défaillance que ce site existe pour éviter.
  • Toute l’analyse et tout le formatage tournent dans un Web Worker, donc un document de 10 Mo ne gèle pas l’onglet.
  • Les polices sont auto-hébergées et sous-ensemblées. Rien n’est récupéré depuis un CDN.

Corrections

L’argument du site est qu’il est soigneux quant à l’exactitude, ce qui veut dire qu’une erreur ici compte plus qu’ailleurs. Chaque message d’erreur cité sur ce site a été produit en exécutant l’analyseur plutôt que de mémoire : chaînes V8 de Node v24.15.0 et chaînes Python de CPython 3.14.3. Les chaînes de Firefox et Safari sont délibérément absentes parce que nous n’avons pas pu les exécuter et les vérifier.

Si vous trouvez quelque chose de faux, dites-le-nous : ce sera corrigé et consigné sur le journal des modifications.

Qui le maintient

Cette section est délibérément vide plutôt que remplie d’un nom à consonance plausible. Les recherches menées pour ce site ont trouvé un concurrent dont le balisage d’article crédite un auteur nommé « Roronoa Zoro », intitulé de poste « Infrastructure Engineer », qui est un personnage de fiction d’une série de mangas. Inventer une personne pour satisfaire un signal de confiance est pire que de n’avoir aucun signal, donc il n’y a rien ici tant qu’il n’y a rien de vrai à y mettre.