Codice Python per caricare dati da alcuni file JSON lunghi e complicati:
with open(filename, "r") as f:
data = json.loads(f.read())
(nota: la migliore versione del codice dovrebbe essere:
with open(filename, "r") as f:
data = json.load(f)
ma entrambi mostrano un comportamento simile)
Per molti tipi di errore JSON (delimitatori mancanti, barre rovesciate errate nelle stringhe, ecc.), Viene stampato un messaggio utile contenente il numero di riga e colonna in cui è stato rilevato l'errore JSON.
Tuttavia, per altri tipi di errore JSON (incluso il classico "utilizzo della virgola sull'ultimo elemento in un elenco", ma anche altre cose come scrivere in maiuscolo vero / falso), l'output di Python è 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
Per quel tipo di ValueError, come fai a farti capire da Python dove si trova l'errore nel file JSON?
json.load(f)
invece dijson.loads(f.read())