Expected property name or '}' in JSON at position N (line L column C)
El parser abrió un objeto y esperaba o bien una clave entre comillas dobles o bien la llave de cierre. Recibió otra cosa. En datos reales, esa otra cosa es casi siempre una comilla simple o un identificador desnudo, lo que significa que el texto es el repr de un dict de Python o un literal de objeto de JavaScript, y no JSON.
Pega tu JSON y ve exactamente dónde se rompe
Nada de lo que pegues sale de tu navegador. La lista de permitidos de connect-src convierte eso en una garantía del navegador, no en una promesa. Compruébalo tú mismo
Qué lo provoca realmente
Ordenados por la frecuencia con la que cada uno acaba siendo la respuesta.
-
01 Claves con comillas simples, de un dict de Python impreso con str()
print(mi_dict) y str(mi_dict) producen sintaxis de Python, no JSON: comillas simples, y True, False y None en vez de true, false y null. Usa json.dumps para producir JSON.
Falla
{'name': 'Priya', 'active': True}Funciona
{"name": "Priya", "active": true} -
02 Claves sin comillas, de un literal de objeto de JavaScript
JavaScript admite identificadores desnudos como claves. JSON no, ni siquiera cuando la clave sería un identificador perfectamente válido.
Falla
{ name: "Priya", role: "admin" }Funciona
{ "name": "Priya", "role": "admin" } -
03 Un comentario dentro de un archivo de configuración
JSON no tiene sintaxis de comentarios. Un // o un /* dentro de un objeto aterriza aquí.
-
04 Comillas tipográficas venidas de un procesador de textos
El autocorrector de Word, Google Docs, Notas y varios clientes de chat convierte las comillas rectas en curvas. Para un parser de JSON, las comillas curvas son caracteres corrientes, no delimitadores de cadena. Nuestro validador las nombra específicamente en vez de reportar un token inesperado genérico.
El mismo error en otros entornos
El problema de fondo es idéntico; solo cambia la redacción. Si un compañero reporta alguno de estos, está mirando exactamente lo mismo que tú.
| 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 |
Preguntas frecuentes
- ¿Cómo produzco JSON a partir de un dict de Python correctamente?
- json.dumps(obj) devuelve una cadena JSON. str(obj) y print(obj) devuelven sintaxis de Python que solo se le parece. Esta es una de las fuentes más habituales de JSON inválido que hay.
- ¿Puedo convertir el repr de un dict de Python a JSON?
- Sí. ast.literal_eval lo parsea de forma segura a un objeto de Python que luego puedes pasar por json.dumps. Nuestra herramienta de reparación hace el mismo trabajo en el navegador, convirtiendo las comillas simples y los literales True, False y None en una sola pasada.
Arréglalo ahora
Pega el payload en la herramienta de arriba, o ve directamente a la creada para este trabajo.
Convertirlo en JSON válido