Python中读写json文件,需要导入json库:import json
函数 | 简介 | 功能 |
json.loads | json字符串 -> python对象 | 将json字符串解码为python对象(对象指的是字典、列表等)【操作字符串】 |
json.dumps | json字符串 <- python对象 | 将python对象编码为json字符串【操作字符串】 |
json.load | json文件 -> python对象 | 提取json文件对象中的内容,并将json字符串解码为python对象【操作文件】 |
json.dump | json文件 <- python对象 | 将python对象编码为json字符串,并存入json文件中【操作文件】 |
文章目录
- 1. 读取json文件 - 解码(loads, load)
- 1.1 使用json.loads函数解码
- 1.2 使用json.load函数解码
- 2. 写入json文件 - 编码(dumps, dump)
- 2.1 使用dumps函数编码
- 2.2 使用dump函数编码
1. 读取json文件 - 解码(loads, load)
现在有json文件test.json,文件内容如下:
{
"name":"Mike",
"age":20,
"features":{"gender":"man", "hobbies":["running", "playing games", "swimming"]},
"brother":{
"name":"Jack",
"age":22,
"features":{"gender":"man", "hobbies":["reading", "watching movies"]}
}
}
1.1 使用json.loads函数解码
import json
path = "test.json"
with open(path, 'r') as json_file:
file_str = json_file.read() # 读入文件内容为字符串
print(type(file_str))
aa = json.loads(file_str) # 传入字符串,解码为python字典对象
print(aa)
print(type(aa))
'''
# 输出内容为:
<class 'str'>
{'name': 'Mike', 'age': 20, 'features': {'gender': 'man', 'hobbies': ['running', 'playing games', 'swimming']}, 'brother': {'name': 'Jack', 'age': 22, 'features': {'gender': 'man', 'hobbies': ['reading', 'watching movies']}}}
<class 'dict'>
'''
可以看出,json.loads函数将传入的字符串类型数据,转化为python字典对象,可以方便地使用字典的各种方法对数据进行操作。
1.2 使用json.load函数解码
import json
path = "test.json"
with open(path, 'r') as json_file:
aa = json.load(json_file) # 传入文件对象,提取文件的内容,并解码为python字典对象
print(aa)
print(type(aa))
print(aa["name"])
'''
# 输出如下:
{'name': 'Mike', 'age': 20, 'features': {'gender': 'man', 'hobbies': ['running', 'playing games', 'swimming']}, 'brother': {'name': 'Jack', 'age': 22, 'features': {'gender': 'man', 'hobbies': ['reading', 'watching movies']}}}
<class 'dict'>
Mike
'''
可以看到,json.load函数直接提取文件内容,并解码为python字典。可以直接使用字典的各种方法,来对数据进行操作。
2. 写入json文件 - 编码(dumps, dump)
2.1 使用dumps函数编码
import json
path = "test2.json"
dict1 = {
"function":"dumps",
"name":"Jack",
"age":22,
"features":{"gender":"man", "hobbies":["reading", "watching movies"]}
}
# 将字典编码为字符串,并写入到json文件中
with open(path, 'w') as json_file:
bb = json.dumps(dict1) # 将python字典编码为json字符串
print(type(bb)) # 输出类型为:str
json_file.write(bb) # 将json字符串写入到文件中
# 读取json文件,查看内容
with open(path, 'r') as json_file:
aa = json.load(json_file) # 传入文件对象,提取文件的内容,并解码为python字典对象
print(aa)
print(type(aa)) # 输出类型为:dict
'''
# 输出内容为:
<class 'str'>
{'function': 'dumps', 'name': 'Jack', 'age': 22, 'features': {'gender': 'man', 'hobbies': ['reading', 'watching movies']}}
<class 'dict'>
'''
json.dumps函数可以将python对象编码为json字符串,然后再用write函数将字符串写入到文件中,即可得到json文件。
2.2 使用dump函数编码
import json
path = "test2.json"
dict1 = {
"function":"dump",
"name":"Jack",
"age":22,
"features":{"gender":"man", "hobbies":["reading", "watching movies"]}
}
# 将字典编码为字符串,并写入到json文件中
with open(path, 'w') as json_file:
json.dump(dict1, json_file) # 将python字典编码为json字符串,并存入json文件中
# 读取json文件,查看内容
with open(path, 'r') as json_file:
aa = json.load(json_file) # 传入文件对象,提取文件的内容,并解码为python字典对象
print(aa)
print(type(aa))
'''
# 输出如下:
{'function': 'dump', 'name': 'Jack', 'age': 22, 'features': {'gender': 'man', 'hobbies': ['reading', 'watching movies']}}
<class 'dict'>
'''
json.dump函数接受两个参数,一个是待编码的python对象,另一个是待写入的文件对象,可以直接将python对象编码并存入文件中。