Aller au contenu
Aback Tools Logo

Comment Valider du JSON en Ligne : Syntaxe, Schéma et Erreurs Courantes

Comment valider du JSON en ligne : ce que signifie « JSON valide » selon la RFC 8259, validateurs locaux dans le navigateur, vérification par JSON Schema, les cinq erreurs les plus courantes et leurs corrections, et la validation programmatique en JS, Python et CI.

DH
Tutorials & How-Tos13 min de lecture2,800 mots

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.

< 1sTemps de validation en ligneAucune installation nécessaire
0 KoDonnées envoyéesFonctionne entièrement dans le navigateur
5Erreurs JSON les plus courantesToutes détectées par un validateur

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

JSON5 et JSONC (JSON avec Commentaires) sont des sur-ensembles souples de JSON très populaires qui autorisent commentaires, virgules finales et apostrophes. Si votre outil produit ces formats, un validateur JSON standard les rejettera — utilisez un parseur JSON5 ou JSONC, ou supprimez ces extensions avant la validation.

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.

- Spécification JSON, RFC 8259

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

Si vous n'avez besoin que d'une réponse oui/non — est-ce du JSON valide ? — collez votre payload et regardez l'indicateur d'état en haut du panneau de sortie. Un badge vert « JSON valide » signifie que le parseur a accepté l'entrée sans erreur. Un indicateur rouge signale un problème, et les détails de l'erreur vous diront exactement lequel.

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.

Open tool

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.

1

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.

Virgule finale - invalide vs valide
json
// ❌ Invalide - virgule après la dernière propriété
{
  "name": "Alice",
  "age": 30,
}

// ✓ Valide - pas de virgule finale
{
  "name": "Alice",
  "age": 30
}
2

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.

Apostrophes - invalide vs valide
json
// ❌ Invalide - clé et valeur entre apostrophes
{'city': 'London'}

// ✓ Valide - clé et valeur entre guillemets doubles
{"city": "London"}
3

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.

Commentaires - JSON invalide
json
// ❌ Invalide - les commentaires ne font pas partie de la spécification JSON
{
  // Ceci est l'objet utilisateur
  "name": "Alice",
  "role": "admin" /* permissions élevées */
}
4

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é.

Caractères non échappés - invalide vs valide
json
// ❌ Invalide - retour à la ligne brut dans la valeur
{"message": "line one
line two"}

// ✓ Valide - retour à la ligne échappé
{"message": "line one\nline two"}
5

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.

Délimiteurs non appariés - invalide vs valide
json
// ❌ 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.

Open tool

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

Si vous avez un payload JSON mais pas encore de schéma, le [Générateur de JSON Schema](/tools/data/converters/json-schema-generator) infère automatiquement un schéma Draft-07 ou Draft 2020-12 à partir de votre payload. Il détecte les types, les champs obligatoires, les formats de chaînes (email, date, URI) et les structures d'objets imbriqués. Utilisez le schéma généré comme point de départ et affinez-le avec des contraintes supplémentaires.

Validation syntaxique ou validation par schéma

AspectValidation syntaxiqueValidation par schéma
Ce qu'elle vérifieConformité à la spécification JSONTypes de données, champs, contraintes
Outil requisN'importe quel parseur JSONValidateur JSON Schema
Sortie d'erreurPosition ligne/caractèreChemin de champ + règle violée
DétecteGuillemets manquants, virgules fautivesType erroné, champ manquant
Quand l'utiliserToujours — premier contrôleQuand un contrat existe
Succès = garantieAnalysable par toute bibliothèque JSONCorrespond à 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.

Validation syntaxique en TypeScript
typescript
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.

Validation syntaxique en Python
python
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 False

Ligne 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.

Validation JSON rapide en ligne de commande
bash
# 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"
done

Tip

Dans les pipelines CI, utilisez `jq empty` plutôt que `python3 -m json.tool` pour la validation JSON. `jq` est plus rapide sur les gros fichiers, ne produit aucune sortie en cas de succès (gardant les logs propres) et renvoie un code de sortie exploitable que votre système CI peut utiliser sans logique supplémentaire.

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

N'utilisez jamais un parseur YAML en substitut d'un validateur JSON. YAML autorise des constructions qui ne sont pas du JSON valide — le fait que YAML accepte votre entrée ne confirme pas que le JSON est conforme à la spécification. Utilisez un parseur spécifique au JSON pour valider du JSON, même quand le JSON est incrusté dans un fichier YAML.

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

En travaillant avec des réponses d'API tierces, validez toujours avant de traiter — même pour les API en lesquelles vous avez confiance. Les fournisseurs d'API modifient les formes de réponses, ajoutent des champs et introduisent des changements incompatibles. Un validateur de schémas avec des schémas versionnés vous donne une alerte précoce des changements de contrat avant qu'ils ne provoquent des échecs silencieux en aval.

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.

Open tool

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.

Questions fréquentes

The fastest method is to paste the string into the JSON Formatter & Validator on Aback Tools - it reports valid or invalid in under a second with no setup. In code, use JSON.parse() wrapped in a try/catch in JavaScript, or json.loads() in a try/except in Python. Both throw an exception on invalid input and return the parsed object on success. For command-line checks, `jq empty input.json` exits with code 0 on valid JSON and code 1 on invalid.

Trailing commas are the single most common JSON error. They appear after the last property in an object or the last element in an array: `{"name": "Alice",}` or `[1, 2, 3,]`. JSON does not allow trailing commas even though JavaScript, Python, and most other languages do. The second most common error is single-quoted strings - JSON requires double quotes for both keys and values.

No. The JSON specification (RFC 8259) explicitly excludes comments. Both `//` line comments and `/* */` block comments are invalid in standard JSON. If you need JSON with comments, consider JSONC (used by VS Code config files) or JSON5, both of which are relaxed supersets. When using these formats, make sure your parser explicitly supports them - a standard JSON parser will reject the file.

Syntax validation checks whether the JSON is well-formed per the RFC 8259 specification - parseable by any standard JSON library. Schema validation checks whether the data inside the JSON conforms to a contract: required fields, correct types, value ranges, string formats. A JSON document can be syntactically valid but semantically wrong - for example, `{"age": "thirty"}` is valid JSON but fails a schema that requires age to be a number.

If your JSON.parse() call appears to succeed but returns null, the input string itself is the JSON text `null` - which is perfectly valid JSON. The value `null` is one of the six JSON value types. If you expected an object or array, the input may have been a null literal rather than a missing or empty string. Wrap JSON.parse() in a function that also checks `typeof result !== "object" || result === null` if you specifically need an object.

A JSONL file contains one JSON object per line and is not a valid JSON document on its own - a standard JSON parser rejects it because the file as a whole does not match the JSON grammar. Use the JSON Lines Validator & Fixer on Aback Tools, which validates each line individually and reports which line numbers have parse errors. For CLI validation, `jq empty < input.jsonl` also works by reading each line as a separate JSON value.

The JSON specification says behavior is undefined when an object contains duplicate keys - it does not explicitly forbid them, but different parsers handle them differently. Python keeps the last value, some parsers keep the first, and others throw an error. In practice, duplicate keys are almost always a bug. Use the JSON Duplicate Key Detector on Aback Tools to scan any payload for repeated keys before it causes a silent data-loss issue in your application.

The simplest option is `jq empty filename.json` - it exits with code 0 on valid JSON and code 1 on invalid, with no output on success. For schema validation in CI, use AJV CLI (`ajv validate -s schema.json -d data.json`) or write a short script using Python's jsonschema library. Both integrate cleanly with GitHub Actions, GitLab CI, and other systems that block on non-zero exit codes. Run validation as an early step before any processing to catch issues at the source.

ShareXLinkedIn