Python读写JSON文件、解析JSON
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式;本文将通过多个例子讲解在Python中如何读写json文件,如何解析JSON内容,以及如何将JSON对象与Python字典相互转换;
在Python中,有一个名为json的内置库可用于处理JSON数据;
使用Python读取和解析JSON文件
测试数据:
{
"db_config":{
"server":"127.0.0.1:3306",
"db_name":"mydb"
},
"sys_config":{
"listen":"127.0.0.1:8080"
}
}
将这段JSON数据保存为test.json文件;
json库有两个方法可用于加载JSON文件或JSON内容,返回的是一个Python字典:
json.load(file_object)
- 该方法传入一个文件对象;json.loads(json_string)
- 该方法传入JSON字符串
json.load()用法:
import json
with open('test.json') as fp:
#该方法传入一个文件对象
data = json.load(fp)
print(data['db_config']['server'])
输出:
127.0.0.1:3306
json.loads()用法:
import json
json_string = """
{
"db_config":{
"server":"127.0.0.1:3306",
"db_name":"mydb"
},
"sys_config":{
"listen":"127.0.0.1:8080"
}
}
"""
data = json.loads(json_string)
print(data['sys_config'])
输出:
{'listen': '127.0.0.1:8080'}
Python字典转换为JSON
可使用json.dumps()
方法将Python字典转换为json字符串;
语法:json.dumps(dict,indent)
dict
- Python字典indent
- 缩进单位
示例:
import json
mydict = {
'class1':{
'a': 1,
'b': '123'
}
}
json_string = json.dumps(mydict) #没使用缩进
print(json_string)
输出:
{"class1": {"a": 1, "b": "123"}}
使用缩进:
json_string = json.dumps(mydict,indent=4)#缩进单位 4
输出:
{ "class1": { "a": 1, "b": "123" } }
Python将JSON写入文件
你可通过上文中的json.dumps()
方法将得到json字符串通过自己的方法写入文件即可;也可以使用json.dump()
方法来写入到文件;
示例代码:
import json
mydict = {
'class1':{
'a': 1,
'b': '123'
}
}
with open('out.json','w') as fp:
json.dump(mydict,fp,indent=4)
上例程序将在当前目录打开一个名为out.json的文件,如果文件不存在,则创建该文件;json.dump()
会将Python字典转换为JSON字符串,并保存到out.json文件中。