关于 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中的getopt函数使用详解
Jul 28 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
Aug 30 Python
python如何让类支持比较运算
Mar 20 Python
Python使用googletrans报错的解决方法
Sep 25 Python
Django models.py应用实现过程详解
Jul 29 Python
Python计算两个矩形重合面积代码实例
Sep 16 Python
如何给Python代码进行加密
Jan 10 Python
自学python用什么系统好
Jun 23 Python
如何利用pycharm进行代码更新比较
Nov 04 Python
只用Python就可以制作的简单词云
Jun 07 Python
python常见的占位符总结及用法
Jul 02 Python
Python爬取奶茶店数据分析哪家最好喝以及性价比
Sep 23 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中对缓冲区的控制实现代码
2013/09/29 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
php解析xml方法实例详解
2015/05/12 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
我的NodeJs学习小结(一)
2014/07/06 NodeJs
JavaScript 作用域链解析
2014/11/13 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
详解JavaScript的Date对象(制作简易钟表)
2020/04/07 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
浅析JS异步加载进度条
2016/05/05 Javascript
jQuery中选择器的基础使用教程
2016/05/23 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
原生js实现焦点轮播图效果
2017/01/12 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
Python文件右键找不到IDLE打开项解决办法
2015/06/08 Python
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
Python实现搜索算法的实例代码
2020/01/02 Python
基于python调用jenkins-cli实现快速发布
2020/08/14 Python
英国在线泳装店:Simply Swim
2019/05/05 全球购物
ANINE BING官方网站:奢华的衣橱基本款和时尚永恒的单品
2019/11/26 全球购物
为什么会有内存对齐
2016/10/10 面试题
求职信格式要求
2014/05/23 职场文书
2014医学院领导班子对照检查材料思想汇报
2014/09/19 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
行政申诉状范文
2015/05/20 职场文书
pytorch fine-tune 预训练的模型操作
2021/06/03 Python
PyTorch device与cuda.device用法
2022/04/03 Python
python​格式化字符串
2022/04/20 Python
Django框架中视图的用法
2022/06/10 Python