« Unexpected token » est le message d’erreur le plus inutile du développement web : il dit seulement que quelque chose, quelque part, ne va pas. En pratique, presque toutes les erreurs JSON ont six causes, et qui les connaît trouve l’endroit en quelques secondes. Ce guide les montre avec des exemples, explique ce que le JSON n’autorise pas contrairement à JavaScript, et comment retrouver ce qu’il vous faut dans une réponse d’API de 5 000 lignes. Connaître les erreurs JSON les plus courantes permet de trouver la faute en quelques secondes.
Ce qu’est le JSON — et ce qu’il n’est pas
Le JSON est un format de données avec très peu de règles : objets entre accolades, tableaux entre crochets, clés toujours entre guillemets doubles, valeurs qui sont des chaînes, des nombres, true/false/null, des objets ou des tableaux. Tout ce que JavaScript autorise en plus — commentaires, guillemets simples, fonctions, undefined, virgules finales — est interdit en JSON. C’est de là que viennent les erreurs.
Les six causes des erreurs JSON
- Virgule finale.
{"a": 1, "b": 2,}: la virgule après le dernier élément est invalide. - Guillemets simples.
{'nom': 'Marie'}: le JSON n’accepte que les doubles. - Clés sans guillemets.
{nom: "Marie"}: valide en JavaScript, pas en JSON. - Commentaires.
// noteou/* ... */n’existent pas en JSON. Les fichiers de configuration qui acceptent des commentaires sont du JSON5 ou du JSONC, pas du JSON. - Caractères non échappés dans une chaîne. Un saut de ligne ou un guillemet dans une chaîne s’écrit
nou". - Données tronquées. La réponse a été coupée à la copie ; l’analyseur dit « Unexpected end of input ». Vérifiez que la dernière accolade est là.
Collez le texte dans le formateur JSON : il marque la ligne et la colonne de l’erreur et nomme la cause en clair.
Des nombres qui n’en sont pas
Les zéros initiaux (007), l’hexadécimal (0xFF), NaN et Infinity sont invalides. Les très grands entiers (au-delà de 2^53) perdent en précision en JavaScript : transmettez les identifiants sous forme de chaînes.
Rendre lisibles les gros fichiers
Personne ne lit une réponse de 5 000 lignes de haut en bas. La vue en arbre du formateur plie et déplie les objets, la recherche trouve les clés dans toute la structure et le chemin de chaque valeur (data.items[3].price) se copie, exactement ce dont vous avez besoin dans le code.
Formater ou minifier
Formaté (indenté), le JSON est pour les humains ; minifié (sans espaces), il est pour le transfert. Ce sont les mêmes données ; la minification économise 20 à 40 % sur les grosses réponses. Dans les fichiers de configuration et les dépôts Git, enregistrez toujours en formaté : les diffs restent lisibles.
Questions fréquentes
Pourquoi la console du navigateur accepte-t-elle mon JSON et pas le serveur ?
Parce que dans la console vous saisissez un littéral d’objet JavaScript, pas du JSON. Le serveur analyse strictement.
Comment valider du JSON dans le terminal ?
cat fichier.json | python3 -m json.tool le formate et signale les erreurs avec leur position.
L’ordre des clés a-t-il de l’importance ?
Selon la spécification, non. Si votre code en dépend, il est fragile.
Gratuit, fonctionne dans votre navigateur, rien n’est envoyé, sans inscription.
Continuer la lecture
Plus de Outils développeur et code.


