Comment formater et valider du JSON en ligne
Si vous travaillez avec des API, des fichiers de configuration ou tout type de donnees structurees, vous traitez du JSON regulierement. Et si vous avez deja fixe un mur de JSON minifie en essayant de trouver un crochet manquant, vous savez pourquoi le formatage est important. Un formateur base sur navigateur gere tout le travail localement sans televerser vos donnees sur un serveur.
Ce que fait le formatage JSON
Le JSON brut d'une reponse API ou d'un fichier minifie ressemble a ceci :
{"users":[{"name":"Alice","age":30,"roles":["admin","editor"]},{"name":"Bob","age":25,"roles":["viewer"]}]}
Un formateur le transforme en quelque chose de lisible :
{
"users": [
{
"name": "Alice",
"age": 30,
"roles": ["admin", "editor"]
},
{
"name": "Bob",
"age": 25,
"roles": ["viewer"]
}
]
}
Les memes donnees, mais maintenant vous pouvez vraiment les lire, reperer les erreurs et comprendre la structure.
Comment formater du JSON en ligne
- Collez votre JSON dans le champ de saisie. Le formateur detectera immediatement les erreurs de syntaxe et validera la structure.
- Choisissez votre indentation : selectionnez 2 ou 4 espaces, ou cliquez sur Minifier pour compresser le JSON en une seule ligne.
- Copiez le resultat : la sortie formatee inclut une coloration syntaxique. Copiez-la pour l'utiliser dans votre code, fichier de configuration ou documentation.
Une breve histoire du JSON
JSON (JavaScript Object Notation) a ete specifie par Douglas Crockford en 2001, formellement documente dans le RFC 4627 (2006), et standardise comme ECMA-404 en 2013 et ISO/IEC 21778 en 2017. Crockford n'a pas invente JSON : il l'a extrait d'un sous-ensemble de la syntaxe litterale d'objet JavaScript deja utilisee, et lui a donne un nom plus une specification d'une page sur json.org.
JSON a rapidement supplante XML pour les API web parce qu'il est radicalement plus simple. Une reponse XML est verbeuse avec des balises d'ouverture/fermeture ; le JSON equivalent fait la moitie de la taille. Les navigateurs peuvent analyser JSON nativement (JSON.parse, JSON.stringify depuis ECMAScript 5 en 2009) sans analyseur XML requis.
En 2015, chaque API majeure dans le monde parlait JSON : API REST, requetes GraphQL, messages WebSocket, fichiers de configuration (package.json, tsconfig.json, .vscode/settings.json), et meme bases de donnees (PostgreSQL JSONB, MongoDB BSON qui est de type JSON). C'est devenu la lingua franca des donnees structurees sur le web.
La simplicite de JSON est aussi sa limitation : pas de commentaires, pas de virgules finales, pas de type date, pas de support binaire. Plusieurs variantes JSON ont emerge pour combler ces lacunes (voir «Formats alternatifs de type JSON» ci-dessous).
Erreurs JSON courantes et comment les reperer
La plupart des erreurs JSON se reduisent a quelques erreurs courantes :
- Virgules manquantes ou supplementaires : une virgule apres le dernier element d'un tableau ou d'un objet est invalide en JSON (contrairement a JavaScript)
- Cles non guillemetees : JSON necessite des guillemets doubles autour de toutes les cles :
"name"et nonname - Guillemets simples : JSON n'accepte que les guillemets doubles :
"value"et non'value' - Virgules finales :
{"a": 1,}est invalide ; supprimez la virgule apres la derniere entree - Commentaires : JSON ne supporte pas les commentaires
// ligneou/* bloc */; la plupart des analyseurs les rejettent - Undefined / NaN / Infinity : JSON n'autorise que les nombres, chaines, booleens, null, tableaux et objets. Les valeurs JavaScript comme
undefined,NaNouInfinityne sont pas valides - Valeurs de fonction : une reference de fonction ne peut pas apparaitre en JSON
- Nombres hexadecimaux ou octaux : seuls les nombres decimaux sont valides (
0xFFet0o17ne le sont pas) - Zeros initiaux :
01est invalide en JSON ; utilisez1 - Echappements hexadecimaux : seuls les echappements Unicode
\usont autorises dans les chaines, pas\xou\0 - Cles dupliquees : techniquement valides selon la specification, mais la plupart des analyseurs utilisent silencieusement la derniere valeur ; comptez sur cela a vos risques
- BOM UTF-8 : une marque d'ordre des octets au debut d'un fichier n'est pas du JSON valide et casse les analyseurs stricts
- Espaces ou contenu final : tout texte apres le
]ou}de fermeture rend le document invalide
Un bon formateur souligne exactement ou se trouve l'erreur, afin que vous puissiez la corriger immediatement au lieu de deviner.
Types de donnees JSON
JSON a exactement 6 types de donnees :
| Type | Exemple | Notes |
|---|---|---|
| Chaine | "hello" | Toujours guillemets doubles, supporte \n, \t, \\, \", \uXXXX |
| Nombre | 42, 3.14, -1e10 | Pas de NaN ou Infinity, pas de zeros initiaux |
| Booleen | true, false | Minuscules uniquement |
| null | null | Minuscules uniquement |
| Tableau | [1, 2, 3] | Ordonne, n'importe quels types, separe par des virgules |
| Objet | {"key": "value"} | Les cles doivent etre des chaines guillemetees, separees par des virgules |
Notablement absent : dates (utilisez des chaines ISO 8601), donnees binaires (utilisez des chaines Base64), commentaires (utilisez un champ de documentation separe), et bigint (les nombres JSON sont en double precision ; les valeurs >= 2^53 perdent en precision).
Quand formater vs minifier
Formater (pretty-print) lorsque vous devez :
- Lire et comprendre les donnees
- Deboguer les reponses API
- Editer les fichiers de configuration
- Partager le JSON avec des collegues
- Commiter au controle de version (diffs plus propres)
Minifier lorsque vous devez :
- Envoyer des donnees sur un reseau (charge utile plus petite = transfert plus rapide)
- Stocker le JSON dans une base de donnees ou un journal ou la lisibilite n'a pas d'importance
- Integrer le JSON dans un parametre URL ou un champ de formulaire
- Generer des reponses API compactes
La difference de taille est significative : un JSON typique de 50 Ko pretty-printed se minifie a environ 30 Ko. Pour les API a fort trafic, les reponses minifiees economisent de la bande passante. Pour les fichiers edites par l'humain, le formate est essentiel.
Formats alternatifs de type JSON
Lorsque la strictesse de JSON est un probleme, plusieurs variantes assouplissent les regles :
| Format | Ajoute par rapport au JSON | Meilleure utilisation |
|---|---|---|
| JSON5 | Commentaires, virgules finales, guillemets simples, cles non guillemetees | Fichiers de configuration ou les humains editent |
| JSONC | Commentaires uniquement (// et /* */) | Parametres VS Code, tsconfig.json |
| HJSON | Commentaires, chaines non guillemetees, chaines multi-lignes | Configs conviviales pour l'humain |
| JSON Lines (NDJSON) | Un objet JSON par ligne, pas de tableau englobant | Fichiers journaux, streaming |
| YAML | Base sur l'indentation, commentaires, ancres, references | Kubernetes, GitHub Actions |
| TOML | Syntaxe de type INI, dates, commentaires | Cargo.toml, pyproject.toml |
| BSON | JSON binaire avec des types supplementaires (Date, ObjectId, Binary) | Stockage interne de MongoDB |
| CBOR (RFC 8949) | Format binaire optimise pour la taille | API de dispositifs contraints |
| MessagePack | Type JSON binaire, compact | Serialisation API interne |
Pour l'echange de donnees (reponses API, configuration), respectez le JSON strict. Pour les configs editees par l'humain, JSON5 ou JSONC sont plus conviviales. Pour le streaming de donnees, NDJSON est la norme de facto.
Pieges courants
- Les nombres perdent en precision : les nombres JSON sont des doubles IEEE 754. Les entiers superieurs a 2^53 (9 007 199 254 740 992) perdent en precision. Transmettez les grands ID sous forme de chaines (
"id": "12345678901234567890"). - Echappements Unicode endommages par les editeurs : certains editeurs convertissent automatiquement les caracteres a l'enregistrement, ce qui peut faire que les analyseurs se comportent de maniere inattendue. Utilisez UTF-8 partout.
- Pretty-printer les dates incorrectement : les dates sous forme de chaines ISO 8601 (
"2026-05-20T13:00:00Z") sont standard. Evitez les horodatages Unix sous forme de chaines ; ils ressemblent a des nombres mais sont generalement destines a etre des dates. - Espaces dans les cles :
{"first name": "..."}est du JSON valide mais casse de nombreux ORM et generateurs de code qui s'attendent a des cles sures comme identifiants. - Valeurs vides vs cles manquantes :
{"a": null}et{}(pas deadu tout) sont des choses differentes. Choisissez une convention et documentez-la. - Incompatibilite bigint : les colonnes bigint PostgreSQL serialisees comme nombres JSON peuvent perdre en precision. Utilisez des chaines pour les ID au-dessus de 2^53.
- Saut de ligne final : certains outils ajoutent un saut de ligne apres l'accolade fermante ; certains analyseurs stricts le rejettent. JSON-stringify ne produit pas de saut de ligne final.
- Incompatibilite d'encodage : la specification JSON exige UTF-8 (ou UTF-16/UTF-32 avec BOM). Latin-1 avec des caracteres non-ASCII echoue. Serialisez toujours en UTF-8.
- JSON stringifie dans du JSON : les caracteres d'echappement imbriques deviennent rapidement ingerables. Imbriquez directement l'objet ou choisissez une convention JSON encodee en base64.
- Commentaires dans le fichier source : si vous commettez du JSONC ou JSON5 dans un systeme qui attend du JSON strict, l'analyse echoue. Convertissez en JSON strict dans votre etape de build.
Conseils pour travailler avec JSON
- Validez avant d'envoyer : si vous construisez manuellement une requete API, collez votre JSON dans un validateur d'abord. Une seule virgule mal placee peut causer des erreurs confuses cote serveur.
- Utilisez une indentation a 2 espaces pour les donnees profondement imbriquees. Cela maintient les lignes plus courtes et la structure plus facile a parcourir.
- Marquez l'outil : si vous travaillez avec JSON regulierement, avoir un formateur a un clic d'eloignement fait gagner du temps comparativement a en chercher un a chaque fois.
- Utilisez jq pour le travail en ligne de commande :
jq(et les alternatives en langage jq commegron,dasel,yq) sont essentielles pour filtrer et transformer du JSON en ligne de commande. - Utilisez un schema JSON pour la validation : pour les formats importants (contrats API, fichiers de configuration), definissez un Schema JSON et validez par rapport. Des outils comme ajv (JavaScript), python-jsonschema ou la validation de schema integree de VS Code empechent les erreurs de forme.
- Utilisez Postman ou Insomnia pour les requetes API : ces outils ont des formateurs et validateurs JSON integres, coloration syntaxique et historique des requetes.
- Faites passer le JSON par prettier dans votre base de code : Prettier formate le JSON de maniere coherente ; integrez-le comme un hook pre-commit afin que le formatage ne soit jamais une preoccupation de revue de code.
- Pour les differences, triez d'abord les cles : les cles d'objet JSON ne sont pas ordonnees. Une difference de
{"a":1,"b":2}vs{"b":2,"a":1}montre que tout a change a moins que vous ne triiez d'abord les cles. Utilisezjq -Sou similaire.
Confidentialite et JSON sensible
Le formateur JSON s'execute entierement dans votre navigateur. Le JSON que vous collez, le traitement intermediaire et la sortie formatee restent tous sur votre appareil. Rien n'est televerse sur un serveur, enregistre ou partage avec qui que ce soit.
Cela importe car le JSON contient souvent des donnees extremement sensibles : reponses API avec dossiers clients et adresses e-mail, tokens d'authentification et donnees de session, schemas API internes qui revelent l'architecture du produit, fichiers de configuration avec mots de passe de base de donnees, donnees financieres d'API comptables, dossiers medicaux d'API FHIR, structure interne de l'entreprise d'API RH, charges utiles de debogage avec des traces de pile revelant l'infrastructure. Les formateurs JSON en nuage enregistrent chaque collage dans leurs journaux de requetes, les conservent parfois pour «amelioration du service», et ont ete impliques dans de vrais incidents ou des reponses API collees ont fui des donnees clients et des cles API. Un formateur base sur navigateur a une exposition nulle : le JSON ne quitte jamais votre machine.
Le formatage base sur navigateur fonctionne aussi hors ligne une fois la page chargee, utile pour formater du JSON dans les avions, dans des environnements securises sans acces internet, ou partout ou vous ne pouvez pas ou ne devriez pas coller des donnees API (en particulier avec des identifiants integres) dans un service tiers.
Questions fréquentes
Le formateur peut-il gérer de gros fichiers JSON ?
Oui. Puisque l'outil tourne dans votre navigateur, il peut traiter des fichiers de dizaines de milliers de lignes. Les performances dépendent de votre appareil, mais la plupart des navigateurs modernes gèrent du gros JSON sans problème.
Cela fonctionne-t-il hors ligne ?
Oui. Une fois la page chargée, l'outil fonctionne entièrement dans votre navigateur sans connexion Internet. Tout le traitement se fait en local en JavaScript.
Quelle est la différence entre formater et valider ?
Formater ajoute indentation et sauts de ligne pour rendre le JSON lisible. Valider vérifie que la structure JSON est correcte, accolades équilibrées, guillemets corrects, types valides. La plupart des formateurs font les deux en même temps.
Puis-je utiliser ceci sur mon téléphone ?
Oui. L'outil fonctionne sur tout appareil avec un navigateur moderne, y compris téléphones et tablettes.