Дополнительно
Почему Python не может разобрать эти данные в формате JSON?
У меня есть этот JSON в файле:
{
"maps": [
{
"id": "blabla",
"iscategorical": "0"
},
{
"id": "blabla",
"iscategorical": "0"
}
],
"masks": [
"id": "valore"
],
"om_points": "value",
"parameters": [
"id": "valore"
]
}
Я написал этот скрипт для печати всех данных JSON:
import json
from pprint import pprint
with open('data.json') as f:
data = json.load(f)
pprint(data)
Однако эта программа вызывает исключение:
Traceback (most recent call last):
File "<pyshell#1>", line 5, in <module>
data = json.load(f)
File "/usr/lib/python3.5/json/__init__.py", line 319, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.5/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.5/json/decoder.py", line 355, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 13 column 13 (char 213)
Как разобрать JSON и извлечь из него значения?
1393
9
Ваши данные не соответствуют формату JSON. У вас есть
[]
, когда должно быть{}
:[]
- для массивов JSON, которые в Python называютсяlist
.{}
- для объектов JSON, которые в Python называютсяdict
.Вот как должен выглядеть ваш JSON-файл:
Затем вы можете использовать свой код:
Теперь с помощью данных можно находить и значения, например, так:
Попробуйте их и посмотрите, есть ли в этом смысл.
Ваш
data.json
должен выглядеть следующим образом:Ваш код должен быть таким:
Обратите внимание, что это работает только в Python 2.6 и выше, так как зависит от [
with
-statement(http://docs.python.org/2/reference/compound_stmts.html#the-with-statement). В Python 2.5 используйте
from future import with_statement`, в PythonДжастин цедра'ы ответ очень полезно, но если вы используете Python 3 чтение JSON должен быть сделано так:
Примечание: использовать формат JSON.нагрузки
вместо
формат JSON.нагрузки. В Python 3,
в формате JSON.нагрузки принимает строковый параметр.в JSON.нагрузку принимает файл как параметр объекта
. имя_файла_данных.прочитать()` возвращает объект String.Если честно, я не'т думаю, что это's не проблема, чтобы загрузить все данные JSON в большинстве случаев память.
и"Ультра в формате JSON" или просто "по ujson" могут держать
[]
в JSON входного файла. Если вы'вновь значение в JSON-формате входного файла в вашу программу как список в JSON элементов, таких как,[{[{}]}, {}, [], и т. д.]
ujson может обрабатывать любой произвольный порядок списков словарей, словарей списков.Вы можете найти ujson в индекс пакет python и API-интерфейс практически идентичен в Python'ы встроенный в JSON-библиотекой`.
ujson также намного быстрее, если вы'вновь загрузка больших файлов в формате JSON. Вы можете увидеть детали производительность в сравнении с другими Python-JSON с библиотеками в той же ссылке.
Если вы're через Питон3, вы можете попробовать изменить подключение (
.файл JSON
) JSON для:Затем, используя следующий код:
Вот вы идете с данные изменены
.файл JSON
:Вы можете позвонить или данные печати на консоль с помощью следующих строках:
Ожидается вывод на печать(data_item['параметры'][0]['ид'])`:
Ожидается вывод на печать(data_item['параметры'][0]['ид'])`:
Существует два вида этого анализа.
Из файла, можно использовать следующий
Эта статья объясняет полного анализа и получение значений с использованием двух сценариев.[Разбор JSON с помощью Python][1]
[1]: https://scriptcrunch.com/parse-json-file-using-python/ на "Разбор JSON с использованием Python и"
Как пользователь питон3,
Разница между "загрузить" и методов нагрузки-это особенно важно, когда вы читаете данные JSON из файла.
Как указано в документации:
в JSON.нагрузки:
в JSON.нагрузки:
в JSON.способ нагрузки может напрямую читать открыт документ JSON, так как он умеет читать двоичный файл.
В результате, ваш JSON-данные доступны как в формате, определенном в соответствии с этой таблицей преобразования:
https://docs.python.org/3.7/library/json.html#json-to-py-table