python(json):序列化 、反序列化 --- json.dump() / json.dumps() / json.load() / json.loads()的使用

序列化

通过将对象序列化可以将其存储在变量或者文件中,可以保存当时对象的状态,实现其生命周期的延长。并且需要时可以再次将这个对象读取出来。json序列化提供了了2个方法,json.dumps()和json.dump()。

1、json.dumps()

json.dumps()方法返回一个str,内容就是标准的JSON

import json   # 导入json库

# 创建字典型数据
dict1 = dict(name = '八岐大蛇',
            age = 1000, 
            sex = '男',
            addr = '东方',
            enemy = ['八神', '草薙京', '神乐千鹤'])
print(type(dict1)) 
dict_data = json.dumps(dict1)   # 将创建的数据进行序列化,并且储存在dict_data变量中
print(dict_data)   # 把储存在变量中的数据输出到控制台
print(type(dict_data))   # 把序列化之后的数据类型输出到控制台
# 控制台输出结果:
<class 'dict'>
{"name": "\u516b\u5c90\u5927\u86c7", "age": 1000, "sex": "\u7537", "addr": "\u4e1c\u65b9", "enemy": ["\u516b\u795e", "\u8349\u8599\u4eac", "\u795e\u4e50\u5343\u9e64"]}
<class 'str'>

Process finished with exit code 0

2、json.dump()

json.dump()方法把JSON写入文件中。

with open("data.json", "w", encoding="UTF-8") as file:  # 把序列化之后的数据写入到data.json文件中
    data_dump = json.dump(dict1, file, ensure_ascii=False)
    file.close()

反序列化

把JSON反序列化为Python对象,用loads()或者对应的load()方法,前者把JSON的字符串反序列化,后者从文件中读取字符串并反序列化。

1、json.load()

json.load()方法将序列化生成的data.json文件反序列化输出。

with open("data.json", "r", encoding="UTF-8") as file:
    data_load = json.load(file)
print(data_load)
print(type(data_load))
# 反序列化的输出结果:
{'name': '八岐大蛇', 'age': 1000, 'sex': '男', 'addr': '东方', 'enemy': ['八神', '草薙京', '神乐千鹤']}
<class 'dict'>

Process finished with exit code 0

2、json.loads()

把JSON的字符串反序列化。

data_loads = json.loads(dict_data)
print(data_loads)
print(type(data_loads))
# 输出:
{'name': '八岐大蛇', 'age': 1000, 'sex': '男', 'addr': '东方', 'enemy': ['八神', '草薙京', '神乐千鹤']}
<class 'dict'>

Process finished with exit code 0

你可能感兴趣的:(python(json):序列化 、反序列化 --- json.dump() / json.dumps() / json.load() / json.loads()的使用)