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

Comment fonctionne CuteJSON et pourquoi rien ne quitte votre navigateur

Publie 4 min de lecture Par Akash Kinkar Pandey

Tous les outils de ce site fonctionnent dans votre navigateur. Il n'y a aucun envoi, aucun compte et aucun serveur qui voit votre JSON. Cet article explique comment cela marche, comment le vérifier vous-même plutôt que de le croire, et ce que les outils ne font volontairement pas.

Ce qui se passe quand vous collez

Quand vous ouvrez la page d'un outil, votre navigateur télécharge un document HTML et un petit fichier JavaScript. C'est tout l'outil. Quand vous collez un document et appuyez sur un bouton, l'analyse et l'impression ont lieu dans l'onglet, et le résultat est réécrit dans la page. Rien n'est envoyé nulle part, parce qu'il n'y a nulle part où l'envoyer : le site n'a aucun serveur pour les données des outils.

Cela veut dire aussi que rien n'est conservé. Fermez l'onglet et le document a disparu. Pas d'historique à effacer, pas de compte à supprimer. Le site retient deux petites valeurs dans votre navigateur, votre choix de thème et votre réponse à l'avis sur les cookies, et les deux restent sur votre appareil.

Vérifiez-le en trente secondes

Une promesse de confidentialité que vous ne pouvez pas vérifier n'est qu'une phrase. Celle-ci se teste en une demi-minute :

  1. Ouvrez n'importe quel outil, par exemple le formateur.
  2. Ouvrez les outils de développement de votre navigateur et allez dans l'onglet Réseau.
  3. Videz la liste, collez du JSON et appuyez sur Formater.

Rien de nouveau n'apparaît dans la liste, car aucune requête n'est envoyée. Comparez avec un outil qui poste ce que vous collez vers un serveur : cela se voit immédiatement dans le même panneau.

Il y a une exception délibérée, sur une autre page : le formulaire de contact envoie bien ce que vous y écrivez, car un message qui reste dans votre navigateur n'est pas un message.

Le projet le vérifie aussi tout seul. La suite de tests de bout en bout colle un marqueur unique dans chaque outil, exécute l'outil, et fait échouer la construction si ce marqueur apparaît dans une requête. Ce test tourne à chaque construction, donc la promesse ne peut pas se périmier en silence à la prochaine fonctionnalité ajoutée.

Pourquoi les outils lisent des jetons plutôt que d'analyser

La plupart des formateurs en ligne font en interne quelque chose comme ceci :

JSON.stringify(JSON.parse(input), null, 2)

Cela paraît inoffensif et abîme les données de deux façons précises.

Les entiers longs perdent leur précision. Les nombres JavaScript sont des doubles, donc un entier de plus de seize chiffres ne tient pas exactement. Collez {"id": 12345678901234567890} dans un formateur bâti ainsi et vous recevez 12345678901234567000. Sans le moindre avertissement.

Les clés qui ressemblent à des nombres sont réordonnées. Les objets JavaScript placent les clés entières dans l'ordre numérique, avant toutes les autres. Ainsi {"2": "silver", "1": "gold"} revient en {"1": "gold", "2": "silver"}, et cet ordre compte plus souvent qu'on ne le croit dans un fichier de configuration.

Les outils d'ici ne construisent jamais de valeur JavaScript à partir de votre document. Ils le découpent en jetons, gardent le texte source exact de chacun, et réimpriment ce flux avec d'autres espaces. Votre document revient caractère pour caractère tel que vous l'avez écrit, seul l'espacement change. Des tests unitaires verrouillent les deux cas, donc une refonte future ne peut pas les réintroduire.

Ce que le site ne fait pas

Certaines normes ne sont implémentées qu'en partie. Le testeur JSONPath prend en charge les sélecteurs qui servent vraiment et les énumère sur la page. Les extensions de fonction et quelques recoins de la RFC 9535 sont absents, et les employer produit un message qui nomme la fonctionnalité plutôt qu'un échec vague. Pour JSON Pointer, c'est l'inverse : la RFC 6901 fait quatre pages, elle est donc implémentée en entier.

La réparation peut modifier vos données. NaN, Infinity et undefined n'ont pas d'équivalent en JSON, alors l'outil de réparation les remplace par null et signale ces changements à part des corrections de ponctuation. Lisez cette liste plutôt que de faire confiance à la sortie.

Les très gros documents se dégradent volontairement. Au-delà d'environ deux cent mille caractères, la coloration syntaxique se désactive pour que la saisie reste fluide, et la page le signale. La visionneuse ne dessine une branche qu'à son ouverture, et au-delà de quelques milliers de valeurs elle refuse de tout déplier d'un coup plutôt que de figer l'onglet pendant une minute.

Par où commencer

Si vous arrivez avec un document cassé, le validateur vous dira ce qui ne va pas et la réparation corrigera la partie mécanique. Si vous arrivez avec un document qui marche mais que vous ne comprenez pas, la visionneuse est le chemin le plus rapide. Tout le reste est sur la page des outils.

Retour aux articles