Qué significa JSONDecodeError y cómo solucionarlo
Referencia del error
JSONDecodeError
Lenguaje
Severidad
MediaCuándo ocurre
json.JSONDecodeError se lanza cuando json.loads() o json.load() recibe una cadena que no es JSON válido.
Posibles soluciones
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ó.
Errores relacionados
Más detalles
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.
Posibles soluciones
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ó.
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ó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}")Practica en inglés
¿Cómo le explicarías un JSONDecodeError a un compañero dev? Elige la frase correcta:
"I hit an error...
¿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