关于 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中实现对list做减法操作介绍
Jan 09 Python
pygame学习笔记(2):画点的三种方法和动画实例
Apr 15 Python
在Python中使用正则表达式的方法
Aug 13 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
Feb 18 Python
python正则表达式之作业计算器
Mar 18 Python
Python彩色化Linux的命令行终端界面的代码实例分享
Jul 02 Python
使用python实现knn算法
Dec 20 Python
python 提取key 为中文的json 串方法
Dec 31 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
Jul 04 Python
Python使用type关键字创建类步骤详解
Jul 23 Python
Python RabbitMQ实现简单的进程间通信示例
Jul 02 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
Jan 10 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文件的实现方法
2007/03/19 PHP
服务器web工具 php环境下
2010/12/29 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
2019/09/30 PHP
扩展String功能方法
2006/09/22 Javascript
js创建对象的几种常用方式小结(推荐)
2010/10/24 Javascript
JavaScript ECMA-262-3 深入解析.第三章.this
2011/09/28 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
2013/07/09 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
浅谈jquery页面初始化的4种方式
2016/11/27 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
2017/05/18 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
vue中element 上传功能的实现思路
2018/07/06 Javascript
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
vue.js实现点击图标放大离开时缩小的代码
2021/01/27 Vue.js
python集合用法实例分析
2015/05/30 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
一行Python代码过滤标点符号等特殊字符
2019/08/12 Python
解决django后台管理界面添加中文内容乱码问题
2019/11/15 Python
python 用Matplotlib作图中有多个Y轴
2020/11/28 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
瑞典多品牌连锁店:Johnells
2021/01/13 全球购物
JSP&Servlet技术面试题
2015/05/21 面试题
学生自我鉴定
2013/12/18 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
街道务虚会发言材料
2014/10/20 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python
python游戏开发之pygame实现接球小游戏
2022/04/22 Python
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript