关于 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 实现堆排序算法代码
Jun 05 Python
python里大整数相乘相关技巧指南
Sep 12 Python
Python中DJANGO简单测试实例
May 11 Python
python中range()与xrange()用法分析
Sep 21 Python
python3个性签名设计实现代码
Jun 19 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
Aug 05 Python
利用Pyhton中的requests包进行网页访问测试的方法
Dec 26 Python
python在回调函数中获取返回值的方法
Feb 22 Python
Django集成搜索引擎Elasticserach的方法示例
Jun 04 Python
Django处理Ajax发送的Get请求代码详解
Jul 29 Python
Django接收自定义http header过程详解
Aug 23 Python
Python爬虫:Request Payload和Form Data的简单区别说明
Apr 30 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编写简单的App接口
2016/08/28 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
简单的php购物车代码
2020/06/05 PHP
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
js变量以及其作用域详解
2020/07/18 Javascript
跨浏览器的事件对象介绍
2012/06/27 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
2015/12/02 Javascript
jQuery多个版本和其他js库冲突的解决方法
2016/08/11 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
Vue仿支付宝支付功能
2018/05/25 Javascript
ios设备中angularjs无法改变页面title的解决方法
2018/09/13 Javascript
vue+element UI实现树形表格带复选框的示例代码
2019/04/16 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
Javascript表单序列化原理及实现代码详解
2020/10/30 Javascript
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
Python标准库之sqlite3使用实例
2014/11/25 Python
Python中List.count()方法的使用教程
2015/05/20 Python
在Python中使用next()方法操作文件的教程
2015/05/24 Python
Python原始字符串与Unicode字符串操作符用法实例分析
2017/07/22 Python
python 二分查找和快速排序实例详解
2017/10/13 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
python 读取竖线分隔符的文本方法
2018/12/20 Python
如何基于python测量代码运行时间
2019/12/25 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
Python requests.post方法中data与json参数区别详解
2020/04/30 Python
python exit出错原因整理
2020/08/31 Python
PHP笔试题
2012/02/22 面试题
2014年社区庆元旦活动方案
2014/03/08 职场文书
工作推荐信范文
2014/05/10 职场文书
小学社会实践活动总结
2014/07/03 职场文书
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
任命书怎么写
2015/03/02 职场文书
2015年新农合工作总结
2015/03/30 职场文书
Redis Stream类型的使用详解
2021/11/11 Redis