La validation JSON est la première chose à faire chaque fois que du JSON quitte un système pour entrer dans un autre : avant qu'il n'atteigne votre API, avant d'être stocké en base de données, avant d'être traité par un script. Un JSON invalide ne produit pas d'erreur utile ; il produit un échec d'analyse souvent imputé au mauvais composant. Ce guide couvre chaque méthode pratique pour valider du JSON en ligne et hors ligne, explique ce que signifie réellement « JSON valide » et montre comment diagnostiquer et corriger les erreurs les plus courantes.
Que signifie réellement « JSON valide » ?
Le JSON (JavaScript Object Notation) dispose d'une spécification formelle définie par la RFC 8259 et la norme ECMA-404. Un document JSON est valide lorsqu'il se conforme intégralement à cette spécification — ni plus, ni moins. Les règles sont plus strictes que ce que la plupart des gens attendent, et plusieurs choses que JavaScript autorise sont explicitement interdites en JSON.
Les règles de la spécification JSON
- Les chaînes doivent utiliser des guillemets doubles — les chaînes entre apostrophes (`'value'`) ne sont pas du JSON valide même si JavaScript les accepte.
- Pas de virgule finale — `[1, 2, 3,]` et `{"a": 1,}` sont invalides ; la virgule après le dernier élément doit être supprimée.
- Pas de commentaires — les `// commentaires de ligne` et `/* commentaires de bloc */` ne font pas partie de la spécification JSON.
- Pas de valeurs undefined — `undefined` est un concept JavaScript ; le JSON n'autorise que `null`, les nombres, les chaînes, les booléens, les tableaux et les objets.
- Les nombres ne peuvent pas avoir de zéro initial — `012` n'est pas du JSON valide ; utilisez `12`.
- Les clés d'objet doivent être des chaînes — `{1: "value"}` est invalide ; les clés doivent être des chaînes entre guillemets doubles.
- Pas de caractères de contrôle dans les chaînes — les retours à la ligne bruts, les tabulations et autres caractères de contrôle doivent être échappés (`\n`, `\t`, etc.).
Note
Syntaxiquement valide ou sémantiquement valide
Un document JSON peut être syntaxiquement valide (correctement formé selon la spécification) mais sémantiquement invalide pour votre application. Par exemple, un objet JSON avec « age » à -5 est du JSON valide, mais un âge invalide pour un profil utilisateur. La validation syntaxique est ce qu'un parseur JSON vérifie ; la validation par schéma est ce qui attrape les erreurs sémantiques. Les deux couches comptent, et ce guide couvre les deux.
Comment valider du JSON en ligne en quelques secondes
Le moyen le plus rapide de vérifier qu'une chaîne JSON est valide est de la coller dans un validateur JSON en ligne. Aucune installation, aucune configuration, aucun compte. Le résultat est instantané et — quand vous utilisez un outil basé navigateur — vos données ne quittent jamais votre appareil.
Un texte JSON est une valeur sérialisée. Notez que certaines spécifications précédentes du JSON contraignaient un texte JSON à être un objet ou un tableau.
Utiliser le Formateur et Validateur JSON
Le Formateur et Validateur JSON d'Aback Tools valide et formate le JSON simultanément. Collez n'importe quelle chaîne JSON et il vous dit immédiatement si l'entrée est valide. Si elle est invalide, l'outil met en évidence la position de l'erreur avec un numéro de ligne et une description en langage clair de ce qui n'a pas fonctionné. Si elle est valide, il produit un JSON propre et indenté que vous pouvez copier directement dans votre projet.
Cette approche à double usage compte en pratique. Quand vous recevez du JSON d'une API, le copiez depuis un fichier de configuration ou le récupérez dans une ligne de log, le texte brut est souvent minifié et difficile à lire. Le formater dans le cadre de la validation vous donne deux choses à la fois : la confirmation que le JSON est valide et une version lisible que vous pouvez réellement inspecter.
Tip
Formateur et Validateur JSON
Collez n'importe quelle chaîne JSON pour la valider, la mettre en forme et la colorer syntaxiquement instantanément dans votre navigateur — avec des diagnostics d'erreur au niveau de la ligne et aucun envoi de données.
Erreurs JSON courantes et comment les corriger
La plupart des documents JSON invalides échouent pour l'une de cinq raisons. Connaître ces schémas permet de corriger les erreurs rapidement sans dépendre entièrement d'un outil pour les diagnostiquer.
Virgule finale
Les virgules finales sont l'erreur JSON la plus courante, en grande partie parce que JavaScript et la plupart des langages modernes les autorisent dans les littéraux d'objets et de tableaux. JSON ne le permet pas. Supprimez la virgule après la dernière propriété de chaque objet et le dernier élément de chaque tableau.
// ❌ Invalide - virgule après la dernière propriété
{
"name": "Alice",
"age": 30,
}
// ✓ Valide - pas de virgule finale
{
"name": "Alice",
"age": 30
}Chaînes entre apostrophes
Les apostrophes sont valides en JavaScript mais explicitement interdites en JSON. Chaque chaîne — clés comme valeurs — doit utiliser des guillemets doubles. Cette erreur est fréquente quand le JSON est rédigé à la main ou copié depuis un littéral d'objet JavaScript.
// ❌ Invalide - clé et valeur entre apostrophes
{'city': 'London'}
// ✓ Valide - clé et valeur entre guillemets doubles
{"city": "London"}Commentaires dans le JSON
Le JSON n'a pas de syntaxe de commentaires. Si votre JSON contient des commentaires `//` ou `/* */` — souvent ajoutés aux fichiers de configuration à titre de documentation — un parseur JSON standard rejettera tout le document. Supprimez tous les commentaires avant l'analyse, ou passez à un format comme JSONC ou JSON5 qui les prend en charge nativement.
// ❌ Invalide - les commentaires ne font pas partie de la spécification JSON
{
// Ceci est l'objet utilisateur
"name": "Alice",
"role": "admin" /* permissions élevées */
}Caractères spéciaux non échappés dans les chaînes
Les retours à la ligne bruts, les tabulations, les antislashs et certains caractères de contrôle Unicode doivent être échappés dans les chaînes JSON. Un retour à la ligne brut à l'intérieur d'une valeur de chaîne — par opposition à la séquence d'échappement `\n` — rend le JSON inanalysable. Cette erreur apparaît fréquemment quand le JSON est généré en concaténant des chaînes dans le code plutôt qu'en utilisant un sérialiseur JSON approprié.
// ❌ Invalide - retour à la ligne brut dans la valeur
{"message": "line one
line two"}
// ✓ Valide - retour à la ligne échappé
{"message": "line one\nline two"}Accolades ou crochets non appariés
Une accolade non fermée, un crochet non fermé ou un délimiteur de fermeture non apparié provoque un échec d'analyse. C'est fréquent dans le JSON édité à la main et dans le JSON généré par du code qui construit les payloads par concaténation de chaînes. Un formateur avec appariement des délimiteurs les rend immédiatement visibles.
// ❌ Invalide - tableau ouvert mais objet fermé
{
"items": [1, 2, 3
}
// ✓ Valide - délimiteurs appariés
{
"items": [1, 2, 3]
}Détecteur de Clés Dupliquées JSON
Détectez les clés d'objet répétées dans n'importe quel payload JSON — les écrasements silencieux par clés dupliquées sont valides selon certains parseurs mais causent des pertes de données et des bugs difficiles à diagnostiquer.
Validation JSON Schema : vérifier les valeurs, pas seulement la syntaxe
La validation syntaxique confirme que le JSON est bien formé. La validation par schéma confirme que le JSON contient les bonnes données — les bons champs, les bons types, les bonnes plages de valeurs. Ce sont deux vérifications distinctes, et toutes deux sont nécessaires dans les systèmes de production.
Qu'est-ce que JSON Schema ?
JSON Schema est un vocabulaire pour décrire la structure et les contraintes d'un document JSON. Un document de schéma spécifie quels champs sont obligatoires, le type requis de chaque champ, les valeurs minimales et maximales des nombres, les motifs de chaînes autorisés, et plus encore. En validant un document JSON contre un schéma, vous obtenez des erreurs précises comme « le champ 'email' est obligatoire » ou « le champ 'age' doit être un entier positif » — pas seulement « JSON invalide ».
Utiliser le Validateur JSON Schema
Le Validateur JSON Schema d'Aback Tools accepte un payload JSON et un JSON Schema et valide le payload contre les contraintes du schéma. Il rapporte les erreurs au niveau des règles avec le chemin de champ exact qui a échoué — vous savez donc non seulement que la validation a échoué, mais quel champ a violé quelle règle. C'est l'outil approprié quand vous devez vérifier qu'une réponse d'API respecte un contrat, ou qu'un fichier de configuration contient tous les réglages requis.
Note
Validation syntaxique ou validation par schéma
| Aspect | Validation syntaxique | Validation par schéma |
|---|---|---|
| Ce qu'elle vérifie | Conformité à la spécification JSON | Types de données, champs, contraintes |
| Outil requis | N'importe quel parseur JSON | Validateur JSON Schema |
| Sortie d'erreur | Position ligne/caractère | Chemin de champ + règle violée |
| Détecte | Guillemets manquants, virgules fautives | Type erroné, champ manquant |
| Quand l'utiliser | Toujours — premier contrôle | Quand un contrat existe |
| Succès = garantie | Analysable par toute bibliothèque JSON | Correspond à votre modèle de données |
Générer un schéma depuis un payload existant
Le moyen le plus rapide d'ajouter une validation par schéma à un projet existant est de générer le schéma à partir d'un payload connu comme bon. Collez un objet JSON représentatif dans le Générateur de JSON Schema et il produira un schéma complet avec définitions de types, champs obligatoires et indications de format. Copiez la sortie dans votre projet et utilisez-la comme contrat de validation pour tous les payloads futurs de ce type.
Valider le JSON par programmation
Les outils en ligne sont le choix le plus rapide pour des vérifications ponctuelles, mais les systèmes de production ont besoin d'une validation JSON intégrée au code. Chaque grand langage de programmation possède au moins une bibliothèque d'analyse JSON bien maintenue, et la plupart ont aussi des bibliothèques dédiées à la validation par schéma.
JavaScript et TypeScript
En JavaScript, `JSON.parse()` lève une `SyntaxError` en cas de JSON invalide — enveloppez-la dans un try/catch pour gérer l'erreur proprement. Pour la validation par schéma, AJV (Another JSON Validator) est la bibliothèque la plus utilisée, prenant en charge JSON Schema Draft-07 jusqu'à Draft 2020-12 avec de hautes performances. Zod est une alternative populaire orientée TypeScript qui valide le JSON contre des schémas de types à l'exécution avec une inférence TypeScript complète. Le convertisseur JSON vers Schéma Zod d'Aback Tools génère un schéma Zod à partir de n'importe quel payload JSON automatiquement.
function isValidJson(input: string): boolean {
try {
JSON.parse(input);
return true;
} catch {
return false;
}
}
// Or get the parsed value and the error together:
function parseJson<T>(input: string): { data: T } | { error: string } {
try {
return { data: JSON.parse(input) as T };
} catch (e) {
return { error: (e as SyntaxError).message };
}
}Python
Le module `json` intégré de Python lève `json.JSONDecodeError` (une sous-classe de `ValueError`) quand l'analyse échoue. L'objet d'erreur inclut le numéro de ligne, la colonne et une description. Pour la validation par schéma, jsonschema et pydantic sont les choix standards — pydantic est particulièrement populaire dans les projets FastAPI car il valide et désérialise le JSON en objets Python typés en une seule étape.
import json
def is_valid_json(text: str) -> bool:
try:
json.loads(text)
return True
except json.JSONDecodeError as e:
print(f"Invalid JSON at line {e.lineno}, col {e.colno}: {e.msg}")
return FalseLigne de commande
Sur tout système où Python est installé, `python3 -m json.tool input.json` valide et met en forme un fichier JSON en une seule commande. Le code de sortie est non nul en cas d'échec, ce qui le rend adapté aux scripts shell et aux pipelines CI. L'outil `jq` est une alternative plus puissante : `jq . input.json` valide et formate, tandis que `jq 'empty' input.json` valide sans produire de sortie.
# Validate and pretty-print with Python (built-in, no install)
python3 -m json.tool input.json
# Validate silently with jq (exit code 0 = valid, 1 = invalid)
jq empty input.json && echo "Valid" || echo "Invalid"
# Validate multiple files with a loop
for f in *.json; do
jq empty "$f" && echo "$f: valid" || echo "$f: INVALID"
doneTip
Valider les formats JSON spéciaux
La validation JSON standard couvre les fichiers `.json` et les payloads d'API. Mais le JSON apparaît dans plusieurs autres formats ayant leurs propres exigences de validation — des formats où un parseur JSON standard produit des résultats incorrects ou rejette l'intégralité de l'entrée.
JSONL et NDJSON (JSON Lines)
Les fichiers JSON Lines (`.jsonl`) contiennent un objet JSON par ligne sans tableau englobant. Ce format est standard pour les fichiers de log, les jeux de données ML et les API en streaming. Un parseur JSON standard rejette un fichier JSONL car le fichier pris comme un tout n'est pas un document JSON valide — chaque ligne doit être analysée individuellement. Le Validateur et Correcteur JSON Lines valide chaque ligne séparément, indique quels numéros de ligne comportent des erreurs et propose des corrections automatiques sûres pour les problèmes de format courants.
JSON avec clés dupliquées
La spécification JSON autorise techniquement les clés dupliquées dans les objets, mais le comportement est indéfini — les différents parseurs le gèrent différemment. Le `json.loads()` de Python conserve la dernière valeur ; certains parseurs gardent la première ; d'autres lèvent une erreur. En pratique, les clés dupliquées sont presque toujours un bug — une fusion mal faite ou une erreur de templating. Le Détecteur de Clés Dupliquées JSON trouve toutes les clés répétées et vous dit exactement où elles se produisent.
JSON dans les fichiers de configuration YAML
YAML est un sur-ensemble de JSON, donc tout JSON valide est aussi du YAML valide. Mais le JSON incrusté dans des fichiers YAML — comme valeur d'un champ de chaîne, par exemple — nécessite sa propre validation. Si vous travaillez avec des configs YAML contenant des valeurs JSON incrustées, validez les portions JSON séparément avec le formateur JSON, puis validez le YAML global avec un validateur YAML. Si votre projet utilise les deux formats et que vous devez comparer deux fichiers de configuration, le Surligneur de Différences JSON/YAML traite les deux simultanément.
Warning
Bonnes pratiques de validation JSON
Valider le JSON une fois avant une opération importante, c'est bien. Intégrer la validation à chaque point où le JSON entre ou sort de votre système, c'est mieux. Ces pratiques s'appliquent que vous construisiez une API, traitiez des pipelines de données ou gériez des fichiers de configuration.
Valider à l'ingestion, pas à la consommation
Le bon moment pour valider le JSON est quand il entre pour la première fois dans votre système — à la frontière de l'API, au gestionnaire de téléversement de fichiers, au consommateur de la file de messages. Valider à la consommation (dans la fonction qui lit une valeur au fin fond de votre code) signifie que les données invalides se propagent plus loin avant d'échouer, rendant l'erreur plus difficile à tracer. Validez tôt et rejetez l'entrée invalide au point d'entrée.
Utilisez un schéma, pas seulement un contrôle syntaxique
La validation syntaxique est le barreau minimal. Dans tout système où le JSON transporte des données critiques pour l'activité — enregistrements utilisateurs, payloads de paiement, valeurs de configuration — un schéma ajoute une seconde couche qui attrape les types erronés, les champs obligatoires manquants et les valeurs hors plage que la validation syntaxique ne peut pas détecter. Générez votre schéma initial depuis un payload connu comme bon avec le Générateur de JSON Schema et affinez-le à mesure que votre modèle de données évolue.
Traitez les erreurs de validation explicitement
Un appel à `JSON.parse()` enveloppé dans un try/catch qui avale l'erreur et renvoie null est pire qu'aucune validation — il masque le problème. Quand la validation JSON échoue, journalisez l'erreur avec la source d'entrée, le message d'erreur exact et suffisamment de contexte pour reproduire le problème. Renvoyez une erreur signifiante à l'appelant plutôt qu'un résultat vide qui provoquera une erreur secondaire ailleurs.
- Journalisez l'entrée brute — quand la validation JSON échoue en production, l'entrée brute est l'artefact de débogage le plus précieux. Journalisez une version tronquée (500 premiers caractères) avec l'erreur.
- Incluez le contexte source — notez d'où vient le JSON : quel endpoint d'API, quel fichier, quel message de file. Cela transforme une erreur d'analyse générique en incident exploitable.
- Mettez en place des alertes pour les échecs d'analyse — un pic d'erreurs de validation JSON signale souvent un changement incompatible dans une API en amont ou un déploiement qui a introduit un bug de sérialisation.
- Testez avec des entrées invalides — incluez du JSON invalide (virgule finale, guillemet manquant, type erroné) dans votre suite de tests pour confirmer que votre gestion d'erreurs se comporte correctement.
Tip
Validateur JSON Schema
Validez n'importe quel payload JSON contre un JSON Schema et obtenez des diagnostics d'erreur au niveau des règles avec les chemins de champs exacts — sans installation, sans envoi de données.
Key takeaways
- Le JSON valide suit strictement la RFC 8259 : guillemets doubles uniquement, pas de virgule finale, pas de commentaires, pas de `undefined`, et pas de caractères de contrôle non échappés.
- Le Formateur et Validateur JSON valide et formate le JSON simultanément, avec des diagnostics d'erreur au niveau de la ligne exécutés entièrement dans votre navigateur.
- Les cinq erreurs JSON les plus courantes sont : virgules finales, chaînes entre apostrophes, commentaires, caractères de contrôle non échappés et délimiteurs non appariés — toutes détectées instantanément par un validateur.
- La validation syntaxique confirme l'analysabilité ; la validation JSON Schema confirme que vos données respectent le contrat attendu — ces deux vérifications servent des objectifs différents.
- Utilisez `JSON.parse()` dans un try/catch pour la validation dans le code ; utilisez `jq empty` pour des vérifications CLI rapides dans les pipelines CI.
- Les formats spéciaux comme JSONL, le JSON à clés dupliquées et le JSON incrusté dans YAML exigent des validateurs spécifiques au format plutôt qu'un parseur JSON standard.
- Validez le JSON à l'ingestion, pas à la consommation — rejetez les données invalides au point d'entrée avant qu'elles ne se propagent dans votre système.