关于 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基础知识_浅谈用户交互
May 31 Python
Python正则表达式常用函数总结
Jun 24 Python
Python输出\u编码将其转换成中文的实例
Dec 15 Python
使用OpenCV实现仿射变换—平移功能
Aug 29 Python
使用pandas的box_plot去除异常值
Dec 10 Python
解决Tensorflow sess.run导致的内存溢出问题
Feb 05 Python
python实现从ftp服务器下载文件
Mar 03 Python
Keras实现支持masking的Flatten层代码
Jun 16 Python
Django前后端分离csrf token获取方式
Dec 25 Python
python Matplotlib基础--如何添加文本和标注
Jan 26 Python
Python实现信息轰炸工具(再也不怕说不过别人了)
Jun 11 Python
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
Apr 06 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
PHP 写文本日志实现代码
2010/05/18 PHP
PHP贪婪算法解决0-1背包问题实例分析
2015/03/23 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
2017/10/13 PHP
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
jQuery获取样式中的背景颜色属性值/颜色值
2012/12/17 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
javascript基于DOM实现权限选择实例分析
2015/05/14 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
深入理解Vuex 模块化(module)
2017/09/26 Javascript
微信小程序 页面滑动事件的实例详解
2017/10/12 Javascript
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
vue项目中使用fetch的实现方法
2019/04/25 Javascript
移动端吸顶fixbar的解决方案详解
2019/07/17 Javascript
JS实现横向轮播图(初级版)
2020/06/24 Javascript
[06:38]DOTA2怒掀电竞风暴 2013Chinajoy
2013/07/27 DOTA
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
python获取豆瓣电影简介代码分享
2014/01/16 Python
python求pi的方法
2014/10/08 Python
python字符串编码识别模块chardet简单应用
2015/06/15 Python
Python中shutil模块的常用文件操作函数用法示例
2016/07/05 Python
Python global全局变量函数详解
2018/09/18 Python
python连接PostgreSQL过程解析
2020/02/09 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
Hammitt官网:设计师手袋
2020/05/23 全球购物
请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值
2014/09/15 面试题
汉语言文学专业自荐信
2014/06/11 职场文书
党员干部三严三实心得体会
2014/10/13 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
公司晚会主持词
2019/04/17 职场文书
Python中的 enumerate和zip详情
2022/05/30 Python