关于 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中关于中文编码问题的处理建议
Apr 08 Python
python使用PIL缩放网络图片并保存的方法
Apr 24 Python
在python的类中动态添加属性与生成对象
Sep 17 Python
Python3 执行Linux Bash命令的方法
Jul 12 Python
pandas通过字典生成dataframe的方法步骤
Jul 23 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
Nov 07 Python
Django 解决开发自定义抛出异常的问题
May 21 Python
如何基于Python爬取隐秘的角落评论
Jul 02 Python
python中tkinter窗口位置\坐标\大小等实现示例
Jul 09 Python
python生成xml时规定dtd实例方法
Sep 21 Python
python中opencv实现图片文本倾斜校正
Jun 11 Python
python manim实现排序算法动画示例
Aug 14 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
通过文字传递创建的图形按钮
2006/10/09 PHP
PHP中session变量的销毁
2014/02/27 PHP
PHP登录(ajax提交数据和后台校验)实例分享
2016/12/29 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
2020/09/17 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
2016/03/07 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
AngularJS学习笔记之依赖注入详解
2016/05/16 Javascript
NodeJs——入门必看攻略
2016/06/27 NodeJs
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
2019/06/19 Javascript
微信小程序实现一个简单swiper代码实例
2019/12/30 Javascript
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
[28:57]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/16 DOTA
django定期执行任务(实例讲解)
2017/11/03 Python
python实现发送邮件功能代码
2017/12/14 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
appium+python adb常用命令分享
2020/03/06 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
纯css实现照片墙3D效果的示例代码
2017/11/13 HTML / CSS
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
农业大学毕业生的个人自我评价
2013/10/11 职场文书
乔布斯斯坦福大学演讲稿
2014/05/23 职场文书
奥林匹克的口号
2014/06/13 职场文书
走群众路线学习心得体会
2014/10/31 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
感谢信的格式
2015/01/21 职场文书
云台山导游词
2015/02/03 职场文书
清明节网上祭英烈寄语2015
2015/03/04 职场文书
CSS 伪元素::marker详解
2021/06/26 HTML / CSS
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS
Java代码规范与质量检测插件SonarLint的使用
2022/08/05 Java/Android