Синтаксический анализ значений из файла 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 ответов
Я думаю, что Ignacio говорит, что ваш файл 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