У меня есть большой JSON документ, сохраненный в формате довольно-печати в файл, где файл выглядит как:Загрузить довольно печатный JSON из файла в python?
$ nano data.json
{
"type" : "object",
"properties" : {
"price" : {"type" : "number"},
"name" : {"type" : "string"},
},
}
Традиционные способы, которые я нашел для чтения таких JSon файлов, таких как ...
with open('data.json', 'r') as handle:
data = json.load(handle)
и ...
json_data=open('data.json','r')
data = json.load(json_data)
json_data.close()
и ...
data = []
with open('data.json') as f:
for line in f:
data.append(json.loads(line))
и ...
ss = ''
with open('data.json', 'r') as f:
for line in f:
ss += ''.join(line.strip())
data = json.loads(ss.decode("utf-8","replace"))
... кажется, работать только для одной струны, не очень-печати отформатированного JSON.
Как загрузить JSON этого формата из файла? Ошибки я получаю при попытке эти форматы ...
Traceback (most recent call last):
File "<stdin>", line 7, in <module>
File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting , delimiter: line 1 column 250 (char 250)
ValueError: Expecting , delimiter: line 9 column 13 (char 310)
У вас есть недействительный JSON; там должна быть * not * запятая. Симпатичная печать здесь не проблема. –
Действительно? Я вытащил этот json из документации jsonschema: https://pypi.python.org/pypi/jsonschema У них есть запятая. – Mittenchops
Они определяют словарь ** python **, где запятая в порядке. Python и JSON могут выглядеть одинаково, но это не одно и то же. –