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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
json.dumpjson.loadPython中用于进行JSON数据的序列化反序列化的方法。json.dump用于将dict类型的数据转换为str,并将其写入到json文件中,可以使用with open()的方式或者直接使用json.dump()将数据写入文件。例如: ```python import json data = {'name': 'John', 'age': 30, 'city': 'New York'} filename = 'data.json' # Solution 1 json_str = json.dumps(data) with open(filename, 'w') as f: f.write(json_str) # Solution 2 json.dump(data, open(filename, 'w')) ``` 而json.load则用于从json文件中读取数据,将其解析为Python数据结构。例如: ```python import json filename = 'data.json' # Solution 1 with open(filename, 'r') as f: json_str = f.read() data = json.loads(json_str) # Solution 2 data = json.load(open(filename, 'r')) ``` 这样就可以将json文件中的数据读取出来并转换为Python的dict类型了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [json.load json.dumpjson.loads json.dumps 全解析](https://blog.csdn.net/cl965081198/article/details/94135502)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [json.dumps()和json.loads()、json.dump()和json.load()的区分](https://blog.csdn.net/weixin_62848630/article/details/124637501)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Python基础详解(十五):json.dump()、json.dumps()、json.load()、json.loads()](https://blog.csdn.net/zhu_rui/article/details/123025943)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值