第十九天python3 json和messagepack
json的数据类型
官网:https://www.json.org/
值:
双引号内的字符串,数值,true和false,null,对象,数组;
字符串:
双引号内的任意字符的组合,可以有专一字符;
数值:
有正负、整数、浮点数;
对象:
无序的键值对的集合;
格式:{key1:value1,key2:value2,...}
key必须是一个字符串,需要双引号包围起来;
value可以是任意合法的值;
数组:
有序的值的集合
格式:[val1,val2,...]
json模块
python支持少量内建数据类型到json类型的转换;

常用方法

示例:
import json
d = dict(zip('abcde',[None,True,False,[1,'abc'],{'a':1,'b':2}]))
s = json.dumps(d)
print(s,type(s)) s1 = """{"b":true,"c":false,"d":[1,"abc"],"e":{"b":2,"a":1},"a":null}"""
d1 = json.loads(s1)
print(d1,type(d1))
# 执行结果
PS D:\Doc> & D:/Python/Python38/python.exe d:/Doc/test.py
{"a": null, "b": true, "c": false, "d": [1, "abc"], "e": {"a": 1, "b": 2}} <class 'str'>
{'b': True, 'c': False, 'd': [1, 'abc'], 'e': {'b': 2, 'a': 1}, 'a': None} <class 'dict'>
对于json的序列化,是str类型的;一般json编码的数据很少落地,数据都是通过网络传输,传输的时候要考虑压缩它,本质上来说它就是文本,就是字符串;
MessagePack
官网:https://msgpack.org
messagepack是一个基于二进制搞笑的对象序列化类库,可用于跨语言通信;它可以向json那样,在许多语言之间交换结构对象;但它比json更快也更轻巧;支持python、ruby、java等众多语言;
messagepack简单易用,高效压缩,所以用它序列化也是一种很好的选择;
安装
pip install msgpack-python
常用方法
packb 序列化对象;提供了dumps来兼容pickle和json;
unpackb 反序列化对象;提供了loads来兼容;
pack 序列化对象保存到文件对象;提供了dump来兼容;
unpack 反序列化对象保存到文件对象;提供load来兼容;
示例
import json
import msgpack d = dict(zip('abcde',[None,True,False,[1,'abc'],{'a':1,'b':2}]))
s = json.dumps(d)
print(s.encode())
print(len(s),type(s))
print("##############")
b1 = msgpack.dumps(d)
print(b1)
print(len(b1),type(b1))
# 执行结果
PS D:\Doc> & D:/Python/Python38/python.exe d:/Doc/test.py
b'{"a": null, "b": true, "c": false, "d": [1, "abc"], "e": {"a": 1, "b": 2}}'
74 <class 'str'>
##############
b'\x85\xa1a\xc0\xa1b\xc3\xa1c\xc2\xa1d\x92\x01\xa3abc\xa1e\x82\xa1a\x01\xa1b\x02'
27 <class 'bytes'> #从上面结果可看出,用msgpack序列化后比json序列化后节省好多字节;
第十九天python3 json和messagepack的更多相关文章
- 孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9并使用pydocx模块将结果写入word文档
孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天终于完成了对docx模块针对 ...
- 孤荷凌寒自学python第四十九天继续研究跨不同类型数据库的通用数据表操作函数
孤荷凌寒自学python第四十九天继续研究跨不同类型数据库的通用数据表操作函数 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 不同类型 ...
- javaSE第十九天
第十九天 227 1:异常(理解) 227 (1) 定义 227 a)异常的引入 227 (2)异常的体系 228 (3)异常的处理: 229 A:JVM的默认处理 ...
- 计算机程序的思维逻辑 (63) - 实用序列化: JSON/XML/MessagePack
上节,我们介绍了Java中的标准序列化机制,我们提到,它有一些重要的限制,最重要的是不能跨语言,实践中经常使用一些替代方案,比如XML/JSON/MessagePack. Java SDK中对这些格式 ...
- IT第十九天 - 继承、接口、多态、面向对象的编程思想
IT第十九天 上午 继承 1.一般情况下,子类在继承父类时,会调用父类中的无参构造方法,即默认的构造方法:如果在父类中只写了有参的构造方法,这时如果在子类中继承时,就会出现报错,原因是子类继承父类时无 ...
- OCM_第十九天课程:Section9 —》Data Guard _ DATA GUARD 原理/DATA GUARD 应用/DATA GUARD 搭建
注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...
- Java编程的逻辑 (63) - 实用序列化: JSON/XML/MessagePack
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- 孤荷凌寒自学python第六十九天学习并实践beautifulsoup对象用法2
孤荷凌寒自学python第六十九天学习并实践beautifulsoup对象用法2 (完整学习过程屏幕记录视频地址在文末) 今天继续学习beautifulsoup对象的属性与方法等内容. 一.今天进一步 ...
- 孤荷凌寒自学python第五十九天尝试使用python来读访问远端MongoDb数据服务
孤荷凌寒自学python第五十九天尝试使用python来读访问远端MongoDb数据服务 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第五天.今天的感觉是,mongoDB数 ...
随机推荐
- 小程序扫码、上传图片、css时间轴
de <!-- 导航 --> <view class="navSec flexBox"> <text class="navItem {{ s ...
- line-height和height关系
如图所示,line-height = font-size + 上下本行距.上下半行距总是相等.font-size居于中间.当font-size值固定时,line-height越大,半行距越大.所以当l ...
- springCloud 微服务通过minio实现文件上传和文件下载接口
直接上代码吧,好多文章的下载都写的不明不白的,让人理解错,气死了!! 文件上传功能 文件上传很简单,首先你得部署好minio,然后写好配置信息,我的是动态读取nacos上配置的yml @Autowir ...
- Thumbnails 图片处理
Thumbnails 是由谷歌提供的图片处理包,目前版本0.4.8. 可以简洁的实现图片的缩放.压缩.旋转.水印.格式转换等操作. 示例代码: package test;import net.coob ...
- Doker从0-1
1.docker思想: 它是一种集装箱的思想,,在以前我们部署一个项目上线的时候,我们要部署各种各样的环境.配置.依赖等,各种各样的环境的配置是十分麻烦的,所以就有了docker.他就是将我们的项目和 ...
- spring 事务传播(Propagation)
propagation 一共有以下几种选项: 1. REQUIRED(默认): 使用当前的事务,如果当前没有事务,则自己新建一个事务,子方法必须运行在一个事务中:如果当前存在事务,则加入这个事务,成为 ...
- 聊聊C#中的Mixin
写在前面 Mixin本意是指冰淇淋表面加的那些草莓酱,葡萄干等点缀物,它们负责给冰淇淋添加风味.在OOP里面也有Mixin这个概念,和它的本意相似,OOP里面的Mixin意在为类提供一些额外功能--在 ...
- Linux版本的项目环境搭建
项目环境docker及docker-compose文档 1.Linux环境介绍 centos7.6 16G以上内存空间(至少8G) 2.静态IP设置 1.找到配置文件 cd /etc/sysconfi ...
- 想学嵌入式?要不一起玩 Arduino 吧
作者:HelloGitHub-Anthony 这里是 HelloGitHub 推出的<讲解开源项目>系列,本期介绍的是如何用开源硬件开发平台 Arduino,自己动手做一个温湿度显示器. ...
- Redis的内存淘汰策略(八)
一:Redis的AOF是什么? 以日志的形式来记录每个写操作(读操作不记录),将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构 ...