Expecting property name enclosed in double quotes: line L column C (char N)
L’analyseur se trouve dans un objet et attendait une clé entre guillemets doubles. Il a trouvé autre chose : une apostrophe, un mot nu, ou sur d’anciennes versions de Python une virgule finale. JSON exige que les clés soient des chaînes entre guillemets doubles, sans exception pour les clés qui ressemblent à des identifiants.
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 dict Python affiché plutôt que sérialisé
str(d) et print(d) produisent des apostrophes. C’est de loin la source la plus fréquente de cette erreur.
Casse
data = str({'a': 1}) json.loads(data)Fonctionne
data = json.dumps({'a': 1}) json.loads(data) -
02 Le traitement des guillemets par l’AWS ou l’Azure CLI sous Windows
PowerShell et cmd gèrent les guillemets autrement qu’un shell POSIX : les arguments JSON en ligne arrivent donc à la CLI privés de leurs guillemets doubles. La correction fiable consiste à mettre le JSON dans un fichier et à passer file://params.json plutôt que de lutter contre le shell.
Casse
aws dynamodb query --key-condition-expression "{\"id\": ...}"Fonctionne
aws dynamodb query --cli-input-json file://params.json -
03 Une virgule finale, sur Python 3.12 et antérieur
Avant la 3.13, une virgule finale produisait ce message. À partir de la 3.13, elle a le sien : « Illegal trailing comma before end of object ». Si vous suivez un guide qui ne parle pas des versions, c’est pourquoi il peut ne pas correspondre à ce que vous voyez.
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 property name or '}' in JSON at position 1 (line 1 column 2) |
|---|
Questions fréquentes
- Puis-je analyser le repr d’un dict Python sans le réécrire ?
- ast.literal_eval s’en charge en toute sécurité : il évalue la syntaxe littérale Python sans exécuter de code arbitraire, contrairement à eval. Passez ensuite le résultat à json.dumps s’il vous faut du vrai JSON.
Corrigez-le maintenant
Collez le payload dans l’outil ci-dessus, ou allez directement à celui conçu pour ce travail.
Convertir les apostrophes en JSON