Python中的dump() 、load()和dumps()、loads()
结论:
1.不加s的标识对json文件的读写,将内存中值读取写入到json后缀文件,或者将json后缀文件中内容读取到内存
2.加了s的主要是字符串类型和其他数据类型的互转
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
Python与JSON数据类型对应表:
1、json.dumps()和json.loads()是json格式处理Python的两种数据类型之间的互转
(1)json.loads()函数是将数据转换字符串转为数据类型字典/列表或其他的格式
import json
string1 = '{"name":"张三", "age":18, "hobby":{"hobby1":"打游戏", "hobby2":"打篮球", "hobby3":"踢足球"}, "gender":"男"}'
string2 = "abcdefgwwwwwwwwwww"
lis = [1,2,3,4,5,6,7,8]
dit = {"name": "egon", "type": {"name": "seq", "parameter": ["1", "2"]}}
print('string:', type(string1))
# json.loads是将字符串类型转换为dict类型
res = json.loads(string1)
print(type(res), res)
# 打印结果:
# string: <class 'str'>
# <class 'dict'> {'name': '张三', 'age': 18, 'hobby': {'hobby1': '打游戏', 'hobby2': '打篮球', 'hobby3': '踢足球'}, 'gender': '男'}
# 非键值对的字符串不支持转换为对应的dict类型
# print('string2:', type(string2))
# res = json.loads(string2)
# print(type(res), res)
# print('list:', type(list))
# res = json.loads(list)
# print(type(res), res)
# TypeError: the JSON object must be str, bytes or bytearray, not list
(2)json.dumps()函数是将数据类型字典/列表转化为数据类型字符串
import json
string1 = '{"name":"张三", "age":18, "hobby":{"hobby1":"打游戏", "gender":["1","2"]}}'
string2 = "abcdefgwwwwwwwwwww"
list = [1, 2, 3, 4, 5, 6, 7, 8]
dit = {"name": "egon", "type": {"name": "seq", "parameter": ["1", "2"]}}
print('string:', type(string1))
res = json.loads(string1)
print(res, type(res))
res2 = json.dumps(res)
print(res2, type(res2))
print("==================================")
print(res.keys())
print(res["name"])
print(res["hobby"]["hobby1"])
print(res["hobby"]["gender"][1])
2、 json.dump()和json.load()是读取json格式文件内容或者将内容写入json格式文件中
(1)json.dump() 将内存中的值传入到指定json文件中
import json
# 序列化结果写入文件的简单方法
with open('aaa.json', mode='wt', encoding='utf-8') as f:
json.dump([1, 'aaa', True, False], f)
(2)json.load() 读取json文件中内容到内存
import json
# 从文件读取json格式字符串进行序列化操作简单方法
with open('aaa.json', mode='rt', encoding='utf-8') as f:
l = json.load(f)