关于 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 相关文章推荐
python3 模拟登录v2ex实例讲解
Jul 13 Python
轻松理解Python 中的 descriptor
Sep 15 Python
python+opencv轮廓检测代码解析
Jan 05 Python
python 将list转成字符串,中间用符号分隔的方法
Oct 23 Python
Flask核心机制之上下文源码剖析
Dec 25 Python
Python 实现微信防撤回功能
Apr 29 Python
python读csv文件时指定行为表头或无表头的方法
Jun 26 Python
python基础教程之while循环
Aug 14 Python
python tkinter之顶层菜单、弹出菜单实例
Mar 04 Python
python随机模块random的22种函数(小结)
May 15 Python
使用keras实现densenet和Xception的模型融合
May 23 Python
python使用glob检索文件的操作
May 20 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不使用插件导出excel的简单方法
2014/03/04 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
2014/10/29 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
2017/10/17 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
javascript 常用代码技巧大收集
2009/02/25 Javascript
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
判断对象是否Window的实现代码
2012/01/10 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
JavaScript性能优化之小知识总结
2015/11/20 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
AngularJS中watch监听用法分析
2016/11/04 Javascript
深入理解vue.js双向绑定的实现原理
2016/12/05 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
8 个有用的JS技巧(推荐)
2019/07/03 Javascript
javascript设计模式 ? 观察者模式原理与用法实例分析
2020/04/22 Javascript
[02:17]2016国际邀请赛中国区预选赛VG战队领队采访
2016/06/26 DOTA
[46:14]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python面向对象编程基础解析(二)
2017/10/26 Python
python中的随机函数小结
2018/01/27 Python
基于numpy中的expand_dims函数用法
2019/12/18 Python
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
美国最大网上鞋店:Zappos
2016/07/25 全球购物
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
生物技术毕业生自荐信
2013/10/23 职场文书
机电系毕业生求职信
2014/07/11 职场文书
2014年政工师工作总结
2014/12/18 职场文书
人事行政部各岗位职责说明书!
2019/07/15 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript
使用Python脚本对GiteePages进行一键部署的使用说明
2021/05/27 Python
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js