Разбор значений из файла JSON?

У меня этот JSON в файле:

{ "maps": [ { "id": "blabla", "iscategorical": "0" }, { "id": "blabla", "iscategorical": "0" } ], "masks": [ "id": "valore" ], "om_points": "value", "parameters": [ "id": "valore" ] } 

Я написал этот скрипт, который печатает весь текст json:

 json_data=open(file_directory).read() data = json.loads(json_data) pprint(data) 

Как я могу разобрать файл и извлечь отдельные значения?

6 Solutions collect form web for “Разбор значений из файла JSON?”

Я думаю, что Игнасио говорит, что ваш JSON-файл неверен. У вас есть [] когда вы должны {} . [] для списков, {} предназначены для словарей.

Вот как выглядит ваш JSON-файл, ваш JSON-файл не будет загружаться для меня:

 { "maps": [ { "id": "blabla", "iscategorical": "0" }, { "id": "blabla", "iscategorical": "0" } ], "masks": { "id": "valore" }, "om_points": "value", "parameters": { "id": "valore" } } 

Затем вы можете использовать свой код:

 import json from pprint import pprint with open('data.json') as data_file: data = json.load(data_file) pprint(data) 

С помощью данных вы также можете найти такие значения:

 data["maps"][0]["id"] data["masks"]["id"] data["om_points"] 

Попробуйте это и посмотрите, начинает ли это иметь смысл.

Ваш data.json должен выглядеть следующим образом:

 { "maps":[ {"id":"blabla","iscategorical":"0"}, {"id":"blabla","iscategorical":"0"} ], "masks": {"id":"valore"}, "om_points":"value", "parameters": {"id":"valore"} } 

Ваш код должен быть:

 import json from pprint import pprint with open('data.json') as data_file: data = json.load(data_file) pprint(data) 

Обратите внимание, что это работает только в Python 2.6 и выше, так как это зависит от свойства with -statement . В Python 2.5 используйте from __future__ import with_statement , в Python <= 2.4, см . Ответ Джастина Пила, на котором основан этот ответ.

Теперь вы можете получить доступ к отдельным значениям следующим образом:

 data["maps"][0]["id"] # will return 'blabla' data["masks"]["id"] # will return 'valore' data["om_points"] # will return 'value' 
 data = [] with codecs.open('d:\output.txt','rU','utf-8') as f: for line in f: data.append(json.loads(line)) 

Ответ @Justin Peel действительно полезен, но если вы используете Python 3, чтение JSON должно быть выполнено следующим образом:

 with open('data.json', encoding='utf-8') as data_file: data = json.loads(data_file.read()) 

Примечание: используйте json.loads вместо json.load . В Python 3 json.loads принимает строковый параметр. json.load принимает файл-подобный параметр объекта. data_file.read() возвращает строковый объект.

«Ultra JSON» или просто «ujson» может работать с [] в вашем входе в файл JSON. Если вы читаете входной файл JSON в своей программе в виде списка элементов JSON; например, [{[{}]}, {}, [], etc...] ujson может обрабатывать любой произвольный порядок списков словарей, словарей списков.

Вы можете найти ujson в индексе пакета Python, и API почти идентичен встроенной json библиотеке Python.

ujson также намного быстрее, если вы загружаете файлы большего размера JSON. Вы можете увидеть детали производительности по сравнению с другими библиотеками JSON Python в той же самой ссылке.

если вы находитесь на python 3, вот как вы можете это сделать

 { "connection1": { "DSN": "con1", "UID": "abc", "PWD": "1234", "connection_string_python":"test1" } , "connection2": { "DSN": "con2", "UID": "def", "PWD": "1234" } } 

Код должен выглядеть так, будто файл connection.json выглядит выше

 connection_file = open('connection.json', 'r') conn_string = json.load(connection_file) conn_string['connection1']['connection_string_python']) >>>test1 
  • HTML и BeautifulSoup: как итеративно разбирать, когда структура не всегда известна заранее?
  • Как преобразовать XML-файл в красивую базу данных pandas?
  • Параметрирование параметров сообщения, полученных GSM-модемом в python
  • Только извлечение текста из этого элемента, а не его детей
  • beautifulsoup с недопустимым html документом
  • Поддерживает ли Pyparsing контекстно-чувствительные грамматики?
  • TypeError: строковые индексы должны быть целыми при разборе JSON с использованием Python?
  • Может ли BeautifulSoup анализировать xml, когда определенный тег является самозакрывающимся и не в то же время
  • Python - лучший язык программирования в мире.