json.JSONDecodeError se lanza cuando json.loads() o json.load() recibe una cadena que no es JSON válido. Es una subclase de ValueError e incluye la posición del error de sintaxis en la entrada, lo que facilita depurar payloads malformados.
Por qué ocurre
- •Usar comillas simples en lugar de comillas dobles (JSON requiere comillas dobles).
- •Comas finales en objetos o arrays, que no están permitidas en JSON.
- •Recibir una página de error HTML o cadena vacía donde se espera JSON.
- •Una respuesta truncada de una solicitud de red que no se recibió completamente.
Ejemplos
Código que causa el error
import json
data = json.loads("{'key': 'value'}") # single quotes are not valid JSONError en la terminal
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
Cómo solucionarlo
Siempre valida la respuesta cruda antes de parsear: verifica que comience con { o [. Usa try/except json.JSONDecodeError para manejar la entrada malformada de forma correcta. Registra la cadena cruda cuando ocurre un error de decodificación para poder inspeccionar lo que realmente se recibió.
Código corregido
import json
raw = '{"key": "value"}' # double quotes
try:
data = json.loads(raw)
print(data["key"])
except json.JSONDecodeError as e:
print(f"Invalid JSON at position {e.pos}: {e.msg}")Errores relacionados
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis