Expected property name or '}' in JSON at position N (line L column C)
L’analyseur a ouvert un objet et attendait soit une clé entre guillemets doubles, soit l’accolade fermante. Il a reçu autre chose. Dans de vraies données, cet autre chose est presque toujours une apostrophe ou un identifiant nu, ce qui signifie que le texte est le repr d’un dict Python ou un littéral d’objet JavaScript, et non du JSON.
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 Des clés entre apostrophes, venues d’un dict Python affiché avec str()
print(mon_dict) et str(mon_dict) produisent de la syntaxe Python, pas du JSON : des apostrophes, et True, False et None au lieu de true, false et null. Utilisez json.dumps pour produire du JSON.
Casse
{'name': 'Priya', 'active': True}Fonctionne
{"name": "Priya", "active": true} -
02 Des clés non citées, venues d’un littéral d’objet JavaScript
JavaScript accepte des identifiants nus comme clés. JSON non, même quand la clé serait un identifiant parfaitement valide.
Casse
{ name: "Priya", role: "admin" }Fonctionne
{ "name": "Priya", "role": "admin" } -
03 Un commentaire dans un fichier de configuration
JSON n’a pas de syntaxe de commentaire. Un // ou un /* dans un objet atterrit ici.
-
04 Des guillemets typographiques venus d’un traitement de texte
La correction automatique de Word, Google Docs, Notes et plusieurs messageries transforme les guillemets droits en guillemets courbes. Pour un analyseur JSON, les guillemets courbes sont des caractères ordinaires, pas des délimiteurs de chaîne. Notre validateur les nomme explicitement au lieu de signaler un jeton inattendu générique.
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.
| Python | Expecting property name enclosed in double quotes: line 1 column 2 (char 1) |
|---|---|
| Java (Jackson) | Unexpected character ('s' (code 115)): was expecting double-quote to start field name |
Questions fréquentes
- Comment produire correctement du JSON à partir d’un dict Python ?
- json.dumps(obj) renvoie une chaîne JSON. str(obj) et print(obj) renvoient de la syntaxe Python qui y ressemble seulement. C’est l’une des sources les plus courantes de JSON invalide dans la nature.
- Puis-je convertir le repr d’un dict Python en JSON ?
- Oui. ast.literal_eval l’analyse en toute sécurité vers un objet Python, que vous pouvez ensuite passer à json.dumps. Notre outil de réparation fait le même travail dans le navigateur, en convertissant les apostrophes et les littéraux True, False et None en une seule passe.
Corrigez-le maintenant
Collez le payload dans l’outil ci-dessus, ou allez directement à celui conçu pour ce travail.
Le convertir en JSON valide