Valider du JSON, c’est confirmer qu’une chaîne est à la fois syntaxiquement correcte (elle suit la grammaire JSON) et, en option, structurellement correcte (elle correspond à la forme attendue par votre application). Ce guide montre comment valider du JSON en JavaScript, Python, en ligne de commande et dans votre navigateur —— et explique la différence cruciale entre validation de syntaxe et validation par schéma.
Deux types de validation JSON
Avant de valider quoi que ce soit, décidez quelle question vous posez réellement :
- Validation de syntaxe —— « Est-ce que c’est du JSON valide tout court ? » Vérifie guillemets, virgules, accolades et types de valeurs contre la grammaire JSON.
JSON.parse()fait ça. - Validation par schéma —— « Ce JSON a-t-il les bons champs, types et contraintes ? » Vérifie que
idest un entier, queemailest présent, etc. Nécessite JSON Schema et un validateur comme Ajv.
La plupart des recherches « validate JSON » concernent la validation de syntaxe —— commençons par là.
Comment valider du JSON en JavaScript
La vérification de syntaxe la plus simple et fiable est d’essayer de parser et de capturer l’erreur. JSON.parse() lève un SyntaxError sur toute entrée invalide :
function isValidJson(text) {
try {
JSON.parse(text);
return true;
} catch {
return false;
}
}
isValidJson('{"name":"Ada"}'); // true
isValidJson("{'name':'Ada'}"); // false —— guillemets simples
isValidJson('{"a":1,}'); // false —— virgule finaleSi vous avez besoin de la raison pour laquelle une chaîne est invalide, capturez le message d’erreur —— il inclut généralement une position :
function validateJson(text) {
try {
return { valid: true, value: JSON.parse(text) };
} catch (err) {
return { valid: false, error: err.message };
}
}
validateJson('{"a":1,}');
// { valid: false, error: "Expected double-quoted property name in JSON at position 7" }N’utilisez pas d’expression régulière pour valider du JSON. JSON est une grammaire récursive et ne peut pas être correctement validée avec une regex —— JSON.parse() est le validateur canonique et est déjà intégré à tout runtime JavaScript.
Comment valider du JSON en Python
json.loads() de Python lève json.JSONDecodeError sur entrée invalide, avec la ligne et la colonne exactes :
import json
def is_valid_json(text):
try:
json.loads(text)
return True
except json.JSONDecodeError as e:
print(f"Invalid JSON: {e.msg} at line {e.lineno} column {e.colno}")
return False
is_valid_json('{"name": "Ada"}') # True
is_valid_json('{"name": "Ada",}') # False —— virgule finaleValider un fichier JSON en ligne de commande
Avec jq
jq sort avec un code non-zéro si l’entrée n’est pas du JSON valide, ce qui le rend idéal pour les scripts et la CI :
# N’affiche rien et sort 0 si valide ; affiche une erreur et sort non-zéro sinon
jq empty data.json && echo "valid" || echo "invalid"Avec Python (aucune installation)
python3 -m json.tool data.json > /dev/null && echo "valid"Dans un pipeline CI
Validez chaque fichier JSON du dépôt comme étape pre-commit ou CI pour qu’une config mal formée n’atteigne jamais la prod :
# Échoue la build si un .json est invalide
find . -name '*.json' -not -path './node_modules/*' \
-exec sh -c 'jq empty "$1" || exit 255' _ {} \;Valider du JSON dans votre navigateur
Pour une vérification rapide sans écrire de code, collez votre JSON dans le validateur JSON de fixjson. Il signale la ligne et la position exactes de toute erreur de syntaxe au fil de la frappe, et tout se déroule en local —— aucune donnée n’est envoyée au serveur, ce qui rend l’outil sûr pour les payloads sensibles. Si le JSON est cassé et que vous voulez le réparer plutôt que simplement le marquer, JSON Fix corrige automatiquement les erreurs courantes.
Au-delà de la syntaxe : valider la structure avec JSON Schema
Un JSON syntaxiquement valide peut quand même être incorrect pour votre application —— un champ requis manquant, une chaîne là où vous attendiez un nombre, une valeur hors plage. Pour imposer une structure, décrivez la forme attendue avec JSON Schema et validez avec Ajv (JavaScript) ou la librairie jsonschema (Python) :
import Ajv from 'ajv';
const ajv = new Ajv();
const validate = ajv.compile({
type: 'object',
required: ['id', 'email'],
properties: {
id: { type: 'integer' },
email: { type: 'string' },
},
});
validate({ id: 42, email: 'a@b.com' }); // true
validate({ id: '42' }); // false —— mauvais type, email manquant
// validate.errors contient le détailValidation par schéma en ligne de commande
Pour des vérifications CI de JSON contre un schéma, deux CLI couvrent l’essentiel :
# Python —— installer une fois, puis valider
pip install jsonschema
jsonschema --instance data.json schema.json && echo OK
# Node —— Ajv en CLI
npm i -g ajv-cli ajv-formats
ajv validate -c ajv-formats -s schema.json -d "data.*.json"Valider du JSON à chaque commit (hook pre-commit)
Pour empêcher tout JSON non validé d’être commité, branchez un hook avec husky + lint-staged :
// package.json
{
"lint-staged": {
"*.json": [
"jq empty",
"ajv validate -s schemas/$name.schema.json -d"
]
}
}
# installer le hook
npx husky add .husky/pre-commit "npx lint-staged" Pour les projets Python, le framework officiel pre-commit fournit un hook check-json qui exécute json.loads sur chaque fichier indexé.
Erreurs courantes de validation JSON
Quand la validation échoue, la cause est presque toujours l’une de ces erreurs —— chacune a son guide dédié :
- Virgules finales après le dernier élément
- Guillemets simples au lieu de doubles, ou clés sans guillemets
- Erreurs Unexpected-token (réponses HTML,
undefined, commentaires) - Unexpected end of input sur du JSON tronqué ou non fermé
- « [object Object] is not valid JSON » quand un objet est stringify avant d’être parsé
Questions fréquentes
Comment vérifier qu’une chaîne est du JSON valide ?
Passez-la à JSON.parse() dans un try/catch (JavaScript) ou à json.loads() dans un try/except (Python). Si ça ne lève pas, c’est valide. Pour une vérification sans code, utilisez un validateur dans le navigateur.
Puis-je valider du JSON avec une expression régulière ?
Non. JSON est une grammaire récursive qu’une regex ne peut pas exprimer correctement. Utilisez toujours un vrai parseur comme JSON.parse().
Quelle est la différence entre valider et parser du JSON ?
Parser convertit le texte en valeur utilisable ; valider confirme juste qu’il pourrait être parsé. En pratique, un parse réussi est la validation —— c’est la même opération, vous jetez simplement le résultat quand seule la validité vous intéresse.
Comment valider du JSON contre un schéma ?
Utilisez JSON Schema avec Ajv (JavaScript) ou la librairie jsonschema (Python). La validation par schéma vérifie types, champs requis et contraintes —— pas seulement la syntaxe.
Validez du JSON maintenant —— sans installation
Collez votre JSON dans le validateur JSON pour voir instantanément les erreurs de syntaxe, avec la ligne et la position surlignées. Tout tourne dans votre navigateur ; aucune donnée ne quitte votre machine.
- Validateur JSON —— vérifiez la syntaxe instantanément dans votre navigateur
- JSON Fix —— répare le JSON invalide, ne se contente pas de le signaler
- Qu’est-ce que JSON Schema ? —— valider structure et types, pas seulement la syntaxe
- Qu’est-ce que JSON ? —— les règles grammaticales qui rendent JSON valide ou non