辨别Python中load和loads的小技巧

本文详细介绍了Python中JSON模块的load与loads方法的区别,前者用于从文件句柄加载并转换为字典,后者则将字符串转换为Python数据结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一句话,load通过json.load(open('*.json'))这样的格式,从文件句柄中打开文件,加载到Python的变量中,并以字典的格式转换。而loads必须对于Python内存中的序列化对象转换成字符串。

因此,load和loads都是实现“反序列化”,区别在于(以Python为例)。loads针对内存对象,即将Python内置数据序列化为字串。如使用json.dumps序列化的对象d_json=json.dumps({‘a‘:1, ‘b‘:2}),在这里d_json是一个字串‘{"b": 2, "a": 1}‘

d=json.loads(d_json)  #{ b": 2, "a": 1},使用load重新反序列化为dict,load针对文件句柄,如本地有一个json文件a.json则可以d=json.load(open(‘a.json‘))相应的,dump就是将内置类型序列化为json对象后写入文件。

测试:

l1 = '[1,2,3,4]'
d1 = '{"k1":"v1"}'
print(type(l1))
print(type(d1))

输出:

<class 'str'>
<class 'str'>
ret = json.loads(l1)
print(ret,type(ret))
ret = json.loads(d1)
print(ret,type(ret))

输出:


[1, 2, 3, 4] <class 'list'>
{'k1': 'v1'} <class 'dict'>[1, 2, 3, 4] <class 'list'>
{'k1': 'v1'} <class 'dict'>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图灵的猫.

小二,给客官上酒!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值