前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python json.load/loads以及json.dump/dumps有什么区别?

Python json.load/loads以及json.dump/dumps有什么区别?

作者头像
Steve Wang
发布2022-01-05 13:54:21
1.3K0
发布2022-01-05 13:54:21
举报
文章被收录于专栏:从流域到海域

序列化

序列化(Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入带临时性或持久性存储区。之后,可以通过从存储区读取或者反序列化对象的状态,重建该对象。 序列化可以使其他代码可以查看或者修改,那些不序列化便无法访问的对象实例数据。

简单而言:

  • 序列化:将对象转换为字节序列的过程
  • 反序列化:将字节恢复为对象的过程

网络传输是一种常见的数据传输场景,在传输前,我们先将编程语言对象序列化为json/xml文件;在传输后,在将json/xml文件反序列化为对应语言的对象。

为什么要进行序列化?

  • 序列化之后的对象可以从内存存储到硬盘中(即实现持久化)
  • 通过序列化可以在进程间传递对象
  • 序列化以后的字节流可以进行网络传输(二进制形式,具备保真性)

特别指出一点,在不同语言之间的对象传递能进一步凸显序列化的重要,比如客户端使用Java或者OC,服务端使用Go/Python,这种场景下编程语言都不同,你把Java的HashMap传递给Python或者Go处理毫无意义,但可以序列化之后以字节流传输,再反序列化为Python的字典或者Go的结构体,这样同样的信息就能够在不同编程语言之间传递。

所以序列化能在不同编程语言,不同主机的进程之间传递对象

有了以上背景知识之后我们再来看这个标题的问题。

json.load/loads以及json.dump/dumps有什么区别?

json.load/loadsjson.dump/dumps都来自json包,它们都是用来处理json格式的数据,也即序列化和反序列化的。

具体的讲:

  • json.dump/dumps函数将一个Python字典进行json格式的编码(即序列化,将Python字典转换成了json格式的字符串) -json.load/loads函数将一个json格式数据转换为字典(即反序列化,将json格式的字符串转换为Python字典)

那英文单复数形式之间又有什么区别呢?

  • 加了s的,都是直接处理流式数据,例如网络传输的场景下,使用requests的get或者post方法时,传入json格式数据使用的是json.dumps,拿到请求的返回后,将返回里面的json数据转化为字典使用的是json.loads。
  • 不加s的,处理的是文件类型的数据,例如要加Python字典存储到json类型的文件中(即持久化),则需要使用json.dump(json_object, file_object),而将json文件中的数据读取为Python能直接处理的字典类型,则需要使用json.load(file_object)

参考文献

序列化和反序列化的详解

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/01/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 序列化
  • json.load/loads以及json.dump/dumps有什么区别?
  • 参考文献
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档