Expecting ',' delimiter: line L column C (char N)
L’analyseur attendait que le conteneur courant se poursuive par une virgule. Le déroutant, c’est que la position désigne souvent un endroit qui semble parfaitement correct, parce que la vraie faute se trouve un peu avant : le plus souvent un guillemet qui a terminé la chaîne plus tôt que prévu.
Collez votre JSON et voyez exactement où il casse
Rien de ce que vous collez ne quitte votre navigateur. La liste d’autorisation connect-src en fait une garantie du navigateur plutôt qu’une promesse. Vérifiez-le vous-même
Ce qui le provoque réellement
Classés selon la fréquence à laquelle chacun se révèle être la réponse.
-
01 Un guillemet double non échappé dans une chaîne
Le guillemet intérieur ferme la chaîne trop tôt, si bien que le texte suivant est lu comme un nouveau jeton là où une virgule était attendue. La question la plus votée de Stack Overflow sur cette erreur s’intitule littéralement « Valid JSON giving JSONDecodeError », ce qui résume toute l’expérience en une ligne.
Casse
{"quote": "he said "yes" loudly"}Fonctionne
{"quote": "he said \"yes\" loudly"} -
02 Une virgule réellement manquante
Entre deux membres d’un objet ou deux éléments d’un tableau.
-
03 Un antislash isolé avant le guillemet fermant
Un chemin Windows se terminant par un antislash échappe le guillemet : la chaîne se poursuit et la virgule suivante n’arrive jamais là où l’analyseur l’attend.
-
04 Le fichier est tronqué
Si la position est la fin de l’entrée, le document a été coupé plutôt que mal écrit.
La même erreur dans d’autres environnements
Le problème de fond est identique ; seule la formulation change. Si un collègue signale l’un de ces messages, il regarde exactement la même chose que vous.
| JavaScript (V8) | Expected ',' or '}' after property value in JSON at position N |
|---|
Questions fréquentes
- Le JSON me paraît correct. Pourquoi échoue-t-il ?
- Regardez le caractère qui précède immédiatement la position signalée, pas la position elle-même. Une chaîne terminée trop tôt est invisible tant que vous n’avez pas compté les guillemets. Coller le document dans un validateur qui colore les chaînes rend la chose évidente en une seconde.
- Comment éviter que cela se reproduise ?
- Ne construisez jamais du JSON par concaténation de chaînes. Construisez un dict et appelez json.dumps, qui échappe correctement chaque valeur par construction.
Corrigez-le maintenant
Collez le payload dans l’outil ci-dessus, ou allez directement à celui conçu pour ce travail.
Mettre les chaînes en évidence