关于 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进程类subprocess的一些操作方法例子
Nov 22 Python
实例解析Python的Twisted框架中Deferred对象的用法
May 25 Python
详解appium+python 启动一个app步骤
Dec 20 Python
Python爬取十篇新闻统计TF-IDF
Jan 03 Python
Python面向对象程序设计之继承与多继承用法分析
Jul 13 Python
由Python编写的MySQL管理工具代码实例
Apr 09 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
Apr 29 Python
python正则过滤字母、中文、数字及特殊字符方法详解
Feb 11 Python
Python 爬取必应壁纸的实例讲解
Feb 24 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
Jun 24 Python
详解用Python调用百度地图正/逆地理编码API
Jul 02 Python
python 对象真假值的实例(哪些视为False)
Dec 11 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+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
php中var_export与var_dump的区别分析
2010/08/21 PHP
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
PHP判断IP并转跳到相应城市分站的方法
2015/03/25 PHP
PHP设置Cookie的HTTPONLY属性方法
2017/02/09 PHP
JQuery SELECT单选模拟jQuery.select.js
2009/11/12 Javascript
Javascript生成json的函数代码(可以用php的json_decode解码)
2012/06/11 Javascript
javascript控制swfObject应用介绍
2012/11/29 Javascript
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
jquery增加时编辑jqGrid(实例代码)
2013/11/08 Javascript
jquery 使用简明教程
2014/03/05 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
webpack搭建vue 项目的步骤
2017/12/27 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
解决matplotlib库show()方法不显示图片的问题
2018/05/24 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
python文件选择对话框的操作方法
2019/06/27 Python
python 哈希表实现简单python字典代码实例
2019/09/27 Python
python中watchdog文件监控与检测上传功能
2020/10/30 Python
使用phonegap检测网络状态的方法
2017/03/30 HTML / CSS
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
红旗团支部事迹材料
2014/01/27 职场文书
入学申请自荐信范文
2014/02/26 职场文书
公司建议书怎么写
2014/05/15 职场文书
学校感恩教育活动总结
2014/07/07 职场文书
建筑安全员岗位职责
2015/02/15 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
环保建议书作文400字
2015/09/14 职场文书
pytorch 如何使用float64训练
2021/05/24 Python
Python 中random 库的详细使用
2021/06/03 Python