Données · 4 min de lecture ·

JSON invalide ? Les 7 erreurs derrière presque tous les échecs

Virgules en trop, guillemets simples, commentaires et plus encore : les petites fautes qui cassent un JSON, comment les repérer vite et comment corriger chacune.

« Unexpected token » et « Unexpected end of JSON input » font partie des erreurs que les développeurs voient le plus souvent. JSON est un format strict, bien plus que le JavaScript dont il est issu, et presque chaque échec se ramène à une poignée d’erreurs.

1. Une virgule finale

Une virgule après le dernier élément d’un objet ou d’un tableau est l’erreur numéro un. JavaScript l’accepte, la norme JSON non.

{"name": "Ana", "age": 31,}   ✗
{"name": "Ana", "age": 31}    ✓

2. Guillemets simples et 3. clés sans guillemets

Chaque clé et chaque chaîne doivent être entre guillemets doubles. {name: 'Ana'} est du JavaScript valide mais du JSON invalide ; il faut écrire {"name": "Ana"}.

4. Les commentaires

JSON n’a pas de commentaires. // et /* */ sont des erreurs, ce qui surprend quiconque copie depuis un fichier de configuration écrit en JSON5 ou JSONC, comme les paramètres de VS Code.

5. Valeurs spéciales et 6. caractères non échappés

undefined, NaN, Infinity et les fonctions n’existent pas en JSON ; utilisez null ou un nombre. Dans une chaîne, un guillemet double s’écrit \", une barre oblique inverse \\ et un saut de ligne \n. Les chemins Windows sont un piège classique : "C:\new" contient un saut de ligne, pas une barre oblique inverse suivie d’un n.

7. Accolades ou crochets manquants ou en trop

Un } ou un ] fermant manquant apparaît en général comme une erreur tout à la fin du texte, loin de la vraie faute. Formater le JSON avec une indentation montre tout de suite quel niveau est cassé.

Les erreurs difficiles à voir

Certains JSON invalides ont l’air parfaits à l’écran :

  • Les guillemets typographiques. Un texte copié depuis un traitement de texte, une messagerie ou une présentation contient souvent “ et ” au lieu de guillemets doubles droits. Ils se ressemblent, mais JSON n’accepte que le caractère " droit.
  • Une marque d’ordre des octets (BOM). Certains éditeurs Windows enregistrent les fichiers avec un caractère invisible au début. JSON.parse en JavaScript et json.loads en Python le refusent, et l’erreur pointe la position 0.
  • Les espaces insécables et autres caractères invisibles collés depuis des pages web.

Du JSON valide qui provoque quand même des bugs

json.dumps de Python écrit NaN et Infinity par défaut, que d’autres analyseurs refusent ; passez allow_nan=False pour le détecter tôt. Les très grands entiers, comme les identifiants 64 bits d’une base de données, sont du JSON valide mais perdent en précision en JavaScript au-delà de 9007199254740991, c’est pourquoi beaucoup d’API les envoient sous forme de chaînes. La plupart des analyseurs acceptent les clés en double, mais la dernière valeur l’emporte sans prévenir.

Comment lire le message d’erreur

Les analyseurs signalent l’endroit où ils ont abandonné, pas celui de votre erreur. Une virgule manquante est généralement signalée au début de la clé suivante, et un crochet fermant manquant tout à la fin de l’entrée. Regardez juste avant la position indiquée.

{
  "name": "Ana"
  "age": 31        ← l’erreur est signalée ici (ligne 3)
}                   la virgule manquante est à la fin de la ligne 2

Trouver l’endroit exact

Le validateur JSON de 4Dev vérifie votre texte selon la norme JSON (RFC 8259) et indique la ligne et la colonne de la première erreur, avec une suggestion de correction. Il vérifie la syntaxe, pas le sens : un JSON valide peut quand même contenir un mauvais type ou un champ manquant pour votre application.

Ouvrir le validateur JSON

LinkedInXFacebook