json.dumps和json.dump是什么区别?json.load()和json.loads()又是什么区别?这些小知识点如果不清楚,非常影响开发代码的效率。
1. 包与函数
- 包名
import json
- 函数名
loads()
load()
dump()
dumps()
2. 区别
-
json.loads()
是从一个字符串中加载成一个dict格式; -
json.load()
是从一个json文件中直接加载得到一个dict; -
json.dumps(dict)
是将一个dict 变成一个字符串; -
json.dump(dict, f)
是将一个dict 直接写入到一个文件中。
3. 代码
3.1 dump的用法
import json
def data_gen():
# 定义一个生成器,用于生成字典
for i in range(100):
yield {"id":i, "name":f"item-{i}"}
# 把生成的词典写入到文件中
with open('data.json', 'a') as f:
for data in data_gen():
# dump 直接往文件里面写
json.dump(data,f)
f.write("\n")
输出结果如下所示:
那么如何加载上面这个文件呢?
# 加载字符串,得到dict
with open('data.json','r') as f:
lines = f.readlines()
for line in lines:
dic = json.loads(line) # 从字符串中加载,得到dic
print(dic)
break
输出结果就是:
{'id': 0, 'name': 'item-0'}