Python基础教程:json中load和loads区别
相同点
- 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进阶
序列化
# 使用class对象的__dict__方法
class Student(object):def __init__(self, name, age, score):self.name = nameself.age = ageself.score = score
import json
s = Student('Bob', 20, 88)
print(json.dumps(s, default=lambda obj: obj.__dict__))
反序列化
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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提供两个模块来实现序列化:cPickle和pickle。这两个模块功能是一样的,区别在于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里load什么意思_【python】json中load和loads区别
相同点 dump 和 dumps 都实现了序列化 load 和 loads 都实现反序列化 变量从内存中变成可存储或传输的过程称之为序列化 序列化是将对象状态转化为可保存或可传输格式的过程. 变量内容 ...
- Python基础教程:repr()与str() 的区别
总的来说 str():将传入的值转换为适合人阅读的字符串形式 repr():将传入的值转换为 Python 解释器可读取的字符串形式 传入整型 # number resp = str(1) print ...
- python基础教程第二版答案-《Python基础教程》(第2版修订版)中要注意的地方...
想必现在大家学习Python都会用3.0及以上的版本了,虽然2.X的版本依然很多,但是这两年随着部分开源项目不再支持2.X版本,3.X已经成为趋势. 正是在这样的大背景下,我最近用这本<Pyth ...
- python基础教程第二版和第三版有什么区别-《Python基础教程》(第2版修订版)中要注意的地方...
想必现在大家学习Python都会用3.0及以上的版本了,虽然2.X的版本依然很多,但是这两年随着部分开源项目不再支持2.X版本,3.X已经成为趋势. 正是在这样的大背景下,我最近用这本<Pyth ...
- 467python教程_Magnus Lie Hetland的《Python基础教程(第3版)》自学笔记(持续更新中)...
转载请注明原创出处,谢谢! 如果读完觉得有收获的话,欢迎点赞加关注. Python基础教程.jpg 快速上手:基础知识 交互式解释器 在Python交互式解释器的提示符>>>后面输入 ...
- 全网惟一面向软件测试人员的Python基础教程-在Python中怎么干倒字符串?
全网惟一面向软件测试人员的Python基础教程 起点:<python软件测试实战宝典>介绍 第一章 为什么软件测试人员要学习Python 第二章 学Python之前要搞懂的道理 第三章 你 ...
- 全网惟一面向软件测试人员的Python基础教程-在Python中如何优雅的切西瓜呢?
全网惟一面向软件测试人员的Python基础教程 起点:<python软件测试实战宝典>介绍 第一章 为什么软件测试人员要学习Python 第二章 学Python之前要搞懂的道理 第三章 你 ...
- Python基础教程:Day14b-网络应用开发
Python基础教程:网络应用开发 发送电子邮件 在即时通信软件如此发达的今天,电子邮件仍然是互联网上使用最为广泛的应用之一,公司向应聘者发出录用通知.网站向用户发送一个激活账号的链接.银行向客户推广 ...
- python基础教程pdf百度云-《Python基础教程(第3版)》PDF高清版
<python基础教程第3版>PDF高清版 百度云资源,内涵教材源代码 百度云链接:百度云盘 提取码:7r7o 编辑推荐 久负盛名的Python入门经典,是非常优秀的基础教程,深入浅出, ...
最新文章
- vue 增加js日志输出文件_Vue.JS项目导入导出JSON文件的方案之一,其他项目也可参考...
- win7 + vs2013 + zlib 编译
- Leaflet中使用leaflet-search插件实现搜索定位效果
- Jerry Wang在SAP社区上获得的徽章
- mysql function怎么创建_mysql,function_mysql创建函数出现问题?,mysql,function - phpStudy
- Java-数据结构与算法-二分查找法
- 关于Spring的几个问题
- C++ protected 一种使用场景
- python中breakpoint什么意思_it/breakpoint是什么意思
- 数据库执行update语句,一直执行不完【已解决】
- UUID 生成器有多快
- 时钟芯片RX8025T的电源设计
- java水彩画效果滤镜,把动物照片转成水彩画效果的PS滤镜教程
- html网页两边有空隙,怎么让整个内容缩进?就是四周都有间隙。
- 如何使用Easy-POI导入复杂表头的Excel报表(含源码级分析)
- IAR程序下载起始地址以及加入BOOTLOAD
- Minecraft 1.18.1、1.18.2模组开发 02.方块和物品
- Ruby 函数式编程
- 【海康摄像头二次开发】移植海康摄像头Android SDK并实现多屏显示
- Zabbix优化深信服AC的设备运行时间监控项
热门文章
- service-mesh
- mvn 主要命令说明
- 大学课程重新学习-操作系统
- Attachments failing with invalid id (Bugtraker.net)
- WebPart(汇总)[转载]
- linux中menu命令,menucofig 详解
- websphere java和进程管理_jvisualvm/Jconsole监控WAS(WebSphere)中间件
- python数据分析常见面试题_python数据分析方向,面试题解答
- 【Demo】修改销售订单库存地点
- 【转】删除过期数据通用程序