Código de Python para cargar datos de algún archivo JSON largo y complicado:
with open(filename, "r") as f:
data = json.loads(f.read())
(nota: la mejor versión del código debe ser:
with open(filename, "r") as f:
data = json.load(f)
pero ambos exhiben un comportamiento similar)
Para muchos tipos de error JSON (delimitadores faltantes, barras invertidas incorrectas en cadenas, etc.), esto imprime un mensaje útil que contiene la línea y el número de columna donde se encontró el error JSON.
Sin embargo, para otros tipos de error JSON (incluido el clásico "usar una coma en el último elemento de una lista", pero también otras cosas como capitalizar verdadero / falso), la salida de Python es solo:
Traceback (most recent call last):
File "myfile.py", line 8, in myfunction
config = json.loads(f.read())
File "c:\python27\lib\json\__init__.py", line 326, in loads
return _default_decoder.decode(s)
File "c:\python27\lib\json\decoder.py", line 360, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "c:\python27\lib\json\decoder.py", line 378, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
Para ese tipo de ValueError, ¿cómo hace que Python le diga dónde está el error en el archivo JSON?
json.load(f)
lugar dejson.loads(f.read())