Code Python pour charger des données à partir d'un long fichier JSON compliqué:
with open(filename, "r") as f:
data = json.loads(f.read())
(note: la meilleure version de code devrait être:
with open(filename, "r") as f:
data = json.load(f)
mais les deux présentent un comportement similaire)
Pour de nombreux types d'erreur JSON (délimiteurs manquants, barres obliques inverses incorrectes dans les chaînes, etc.), cela imprime un joli message utile contenant le numéro de ligne et de colonne où l'erreur JSON a été trouvée.
Cependant, pour d'autres types d'erreur JSON (y compris le classique "utiliser la virgule sur le dernier élément d'une liste", mais aussi d'autres choses comme mettre en majuscule vrai / faux), la sortie de Python est simplement:
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
Pour ce type de ValueError, comment faire en sorte que Python vous dise où se trouve l'erreur dans le fichier JSON?
json.load(f)
place dejson.loads(f.read())