打开json - 解析json文件python
从JSON文件解析值? (5)
我有一个文件中的这个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)
我如何解析文件并提取单个值?
“超JSON”或简单地“ujson”可以处理您的JSON文件输入中的[]
。 如果您正在将JSON输入文件作为JSON元素列表读入程序, 如[{[{}]}, {}, [], etc...]
ujson可以处理任何字典列表字典列表的任意顺序。
您可以在Python包索引中找到ujson,并且该API几乎与Python的内置json
库相同。
如果您要加载更大的JSON文件,则ujson速度也会更快。 与提供的同一链接中的其他Python JSON库相比,您可以看到性能细节。
@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()
返回一个字符串对象。
如果你在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'])
connection_file.close()
>>>test1
我想伊格纳西奥说的是你的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
data = json.load(open('data.json'))
pprint(data)
有了数据,你现在也可以找到像这样的值:
data["maps"][0]["id"]
data["masks"]["id"]
data["om_points"]
尝试一下,看看它是否开始有意义。
data = []
with codecs.open('d:\output.txt','rU','utf-8') as f:
for line in f:
data.append(json.loads(line))