关于 Python json中load和loads区别


Posted in Python onNovember 07, 2021

一、相同点

  • dump dumps 都实现了序列化
  • load loads 都实现反序列化

变量从内存中变成可存储或传输的过程称之为序列化序列化是将对象状态转化为可保存或可传输格式的过程。

变量内容从序列化的对象重新读到内存里称之为反序列化反序列化是流转换为对象。

二、区别

1.load 和 loads (反序列化)

load:针对文件句柄,将json格式的字符转换为dict,从文件中读取 (将string转换为dict)

a_json = json.load(open('demo.json','r'))

loads:针对内存对象,将string转换为dict (将string转换为dict)

a = json.loads('{'a':'1111','b':'2222'}')

2.dump 和 dumps(序列化)

dump:将dict类型转换为json字符串格式,写入到文件 (易存储)

a_dict = {'a':'1111','b':'2222'}
json.dump(a_dict, open('demo.json', 'w')

dumps:将dict转换为string (易传输)

a_dict = {'a':'1111','b':'2222'}
a_str = json.dumps(a_dict)

总结:

根据序列化和反序列的特性

  • loads: 是将string转换为dict
  • dumps: 是将dict转换为string
  • load: 是将里json格式字符串转化为dict,读取文件
  • dump: 是将dict类型转换为json格式字符串,存入文件

三、JSON进阶

1.序列化

# 使用class对象的__dict__方法
class Student(object):
    def __init__(self, name, age, score):
        self.name = name
        self.age = age
        self.score = score
import json
s = Student('Bob', 20, 88)
print(json.dumps(s, default=lambda obj: obj.__dict__))

2.反序列化

#Python学习交流群:531509025

def dict2student(d):
    return Student(d['name'], d['age'], d['score'])

json_str = '{"age": 20, "score": 88, "name": "Bob"}'
print(json.loads(json_str, object_hook=dict2student))

四、python中的序列化和反序列化

Python提供两个模块来实现序列化:cPicklepickle。这两个模块功能是一样的,区别在于cPickle是C语言写的,速度快,pickle是纯Python写的,速度慢。

  • 变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling
  • 变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling
try:
    import cPickle as pickle
except ImportError:
    import pickle

1.将内存对象存取到磁盘

a = dict(a=1, b=2, c=3)
pickle.dumps(a)     # 将对象序列化为str然后存入文件

a = dict(a=1, b=2, c=3)
pickle.dump(a, open('a.txt', 'wb')) # 使用dump直接把对象序列化为file-like Object,注意是二进制存储

2.从磁盘读取到内存对象

pickle.load(open('a.txt', 'rb'))    #从file-like Object中直接反序列化出对象

到此这篇关于关于 Python json中load和loads区别的文章就介绍到这了,更多相关 Python json中load和loads区别内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python正则匹配查询港澳通行证办理进度示例分享
Dec 27 Python
Python检测字符串中是否包含某字符集合中的字符
May 21 Python
python 全文检索引擎详解
Apr 25 Python
python与C互相调用的方法详解
Jul 14 Python
python aiohttp的使用详解
Jun 20 Python
python如何读取bin文件并下发串口
Jul 05 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
Aug 22 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
Oct 17 Python
Pandas DataFrame中的tuple元素遍历的实现
Oct 23 Python
Python更新所有已安装包的操作
Feb 13 Python
解决python 执行sql语句时所传参数含有单引号的问题
Jun 06 Python
pytorch显存一直变大的解决方案
Apr 08 Python
Python卷积神经网络图片分类框架详解分析
Nov 07 #Python
Python人工智能之混合高斯模型运动目标检测详解分析
7个关于Python的经典基础案例
Nov 07 #Python
python机器学习创建基于规则聊天机器人过程示例详解
Python中Numpy和Matplotlib的基本使用指南
python模块与C和C++动态库相互调用实现过程示例
Nov 02 #Python
Qt自定义Plot实现曲线绘制的详细过程
Nov 02 #Python
You might like
PHP基于imap获取邮件实例
2014/11/11 PHP
PHP中使用Imagick操作PSD文件实例
2015/01/26 PHP
PHP stream_context_create()函数的使用示例
2015/05/12 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
2015/11/18 PHP
Joomla数据库操作之JFactory::getDBO用法
2016/05/05 PHP
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
用javascript实现点击链接弹出"图片另存为"而不是直接打开
2007/08/15 Javascript
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
2010/08/13 Javascript
jquery的键盘事件修改代码
2011/02/24 Javascript
bootstrap table小案例
2016/10/21 Javascript
node.js操作mongodb简单示例分享
2017/05/25 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
2020/07/28 Javascript
antd design table更改某行数据的样式操作
2020/10/31 Javascript
python轻松实现代码编码格式转换
2015/03/26 Python
Python配置文件解析模块ConfigParser使用实例
2015/04/13 Python
python实现文本文件合并
2015/12/29 Python
Python实现解析Bit Torrent种子文件内容的方法
2017/08/29 Python
Python_LDA实现方法详解
2017/10/25 Python
TensorFlow神经网络优化策略学习
2018/03/09 Python
python逐行读写txt文件的实例讲解
2018/04/03 Python
解决python 输出是省略号的问题
2018/04/19 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
计算机二级python学习教程(1) 教大家如何学习python
2019/05/16 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
2019/06/05 Python
python命令行工具Click快速掌握
2019/07/04 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
2020/01/04 Python
如何利用python生成MD5并去重
2020/12/07 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
2021/02/16 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
爱尔兰领先的在线体育用品零售商:theGAAstore
2018/04/16 全球购物
ORLY官网:美国专业美甲一线品牌
2019/12/11 全球购物
TCP协议通讯的过程和步骤是什么
2015/10/18 面试题
小学国庆节活动方案策划书
2014/09/16 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书