Разбор значений из файла 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)
Как я могу разобрать файл и извлечь отдельные значения?
8 ответов:
Я думаю, что Игнасио говорит, что ваш файл JSON неверен. У вас есть
[]когда вы должны есть!--4-->.[]для списков{}для словарей.вот как должен выглядеть ваш файл 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 f: data = json.load(f) 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-заявлением. В Python 2.5 использоватьfrom __future__ import with_statement, в Python ответ Джастина пила, на котором основан этот ответ.теперь вы можете также получить доступ к одиночным значениям, как это:
data["maps"][0]["id"] # will return 'blabla' data["masks"]["id"] # will return 'valore' data["om_points"] # will return 'value'
ответ Джастина пила действительно полезно, но если вы используете 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()возвращает объект String.
data = [] with codecs.open('d:\output.txt','rU','utf-8') as f: for line in f: data.append(json.loads(line))
"Ultra JSON" или просто "ujson" может обрабатывать наличие
[]во входном файле JSON. Если Вы читаете входной файл JSON в свою программу в виде списка элементов JSON; например,[{[{}]}, {}, [], etc...]ujson может обрабатывать любой произвольный порядок списков словарей, словарей списков.вы можете найти ujson в индекс пакета Python и API почти идентичен встроенному в Python
jsonбиблиотека.ujson также намного быстрее, если вы загружаете большие файлы JSON. Вы можете увидеть сведения о производительности по сравнению с другими библиотеками Python JSON в той же ссылке.
Если вы находитесь в Python 3 Вот как вы можете сделать это
{ "connection1": { "DSN": "con1", "UID": "abc", "PWD": "1234", "connection_string_python":"test1" } , "connection2": { "DSN": "con2", "UID": "def", "PWD": "1234" } }код должен выглядеть как предполагающее соединение.JSON-файл выглядит выше
connection_file = open('connection.json', 'r') conn_string = json.load(connection_file) conn_string['connection1']['connection_string_python']) connection_file.close() >>>test1
# Here you go with modified json file: # data.json file : { "maps": [ { "id": "blabla", "iscategorical": "0" }, { "id": "blabla", "iscategorical": "0" } ], "masks": [{ "id": "valore" }], "om_points": "value", "parameters": [{ "id": "valore" }] } # You can call or print data on console by using below lines import json from pprint import pprint with open('data.json') as data_file: data_item = json.load(data_file) pprint(data_item) print(data_item['parameters'][0]['id']) #Output : #pprint(data_item) output as : {'maps': [{'id': 'blabla', 'iscategorical': '0'}, {'id': 'blabla', 'iscategorical': '0'}], 'masks': [{'id': 'valore'}], 'om_points': 'value', 'parameters': [{'id': 'valore'}]} #print(data_item['parameters'][0]['id']) output as : valore
в этом разборе есть два типа.
- разбор данных из файла по системному пути
- разбор JSON с удаленного URL.
из файла, можно использовать следующие
import json json = json.loads(open('/path/to/file.json').read()) value = json['key'] print json['value']эта арктикула объясняет полный разбор и получение значений с помощью двух сценариев.разбор JSON с помощью Python
Comments