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的更多相关文章

  1. 孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9并使用pydocx模块将结果写入word文档

    孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天终于完成了对docx模块针对 ...

  2. 孤荷凌寒自学python第四十九天继续研究跨不同类型数据库的通用数据表操作函数

    孤荷凌寒自学python第四十九天继续研究跨不同类型数据库的通用数据表操作函数 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 不同类型 ...

  3. javaSE第十九天

    第十九天    227 1:异常(理解)    227 (1) 定义    227 a)异常的引入    227 (2)异常的体系    228 (3)异常的处理:    229 A:JVM的默认处理 ...

  4. 计算机程序的思维逻辑 (63) - 实用序列化: JSON/XML/MessagePack

    上节,我们介绍了Java中的标准序列化机制,我们提到,它有一些重要的限制,最重要的是不能跨语言,实践中经常使用一些替代方案,比如XML/JSON/MessagePack. Java SDK中对这些格式 ...

  5. IT第十九天 - 继承、接口、多态、面向对象的编程思想

    IT第十九天 上午 继承 1.一般情况下,子类在继承父类时,会调用父类中的无参构造方法,即默认的构造方法:如果在父类中只写了有参的构造方法,这时如果在子类中继承时,就会出现报错,原因是子类继承父类时无 ...

  6. OCM_第十九天课程:Section9 —》Data Guard _ DATA GUARD 原理/DATA GUARD 应用/DATA GUARD 搭建

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

  7. Java编程的逻辑 (63) - 实用序列化: JSON/XML/MessagePack

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

  8. 孤荷凌寒自学python第六十九天学习并实践beautifulsoup对象用法2

    孤荷凌寒自学python第六十九天学习并实践beautifulsoup对象用法2 (完整学习过程屏幕记录视频地址在文末) 今天继续学习beautifulsoup对象的属性与方法等内容. 一.今天进一步 ...

  9. 孤荷凌寒自学python第五十九天尝试使用python来读访问远端MongoDb数据服务

    孤荷凌寒自学python第五十九天尝试使用python来读访问远端MongoDb数据服务 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第五天.今天的感觉是,mongoDB数 ...

随机推荐

  1. input 相关

    1.label 标签 for 属性同 input 标签 id 属性联系之一

  2. 聊聊 HTTPS

    聊聊 HTTPS 本文写于 2021 年 6 月 30 日 最近工作也是越来越忙了,不像上学的时候,一天下来闲着没事可以写两篇博客. 今天来聊一下 HTTPS. HTTP HTTP 是不安全的协议. ...

  3. webpack与vite的对比

    vite与webpack的打包原理: vite: 基于游览器原生ES Module,利用游览器解析import,服务器端按需编译返回 webpack: 逐级递归识别依赖,构建依赖图谱->转化AS ...

  4. mybatis plus 更新字段的时候设置为 null 后不生效

    mybatis plus 将属性设置为 null 值会被忽略,最终生成的 sql 中不会有 set field = null(可能是某些情况) mybatis-plus 更新字段的时候设置为 null ...

  5. linux篇-Centos7jdk安装

    2.1查看现有JDK #rpm -qa|grep jdk (如果有其他版本的JDK建议卸载) 卸载其他版本的JDK命令 #yum –y remove java-1.6.0 #yum –y remov ...

  6. QC快速充电

    QC快充 一.高通QC快充的介绍 二.识别充电类型的芯片介绍 三.QC充电曲线 四.如何在log中看QC充电类型 五.QC3识别错误 六.波形图 一.高通QC快充的介绍 高通QC快充技术,又称Quic ...

  7. 【freertos】012-事件标志概念和实现细节

    目录 前言 12.1 实现事件机制的预备知识 12.1.1 守护任务 12.1.2 事件的不确定性 12.1.3 事件组的报文 12.2 事件概念 12.3 事件用途参考 12.4 事件实现原理简述 ...

  8. 【生成对抗网络学习 其三】BiGAN论文阅读笔记及其原理理解

    参考资料: 1.https://github.com/dragen1860/TensorFlow-2.x-Tutorials 2.<Adversarial Feature Learning> ...

  9. golang的defer踩坑汇总

    原文链接:http://www.zhoubotong.site/post/50.html defer语句用于延迟函数调用,每次会把一个函数压入栈中,函数返回前再把延迟的函数取出并执行.延迟函数可以有参 ...

  10. SpringCloud Alibaba整合Sentinel

    SpringCloud Alibaba整合Sentinel Sentinel 控制台 1. 概述 Sentinel 提供一个轻量级的开源控制台,它提供机器发现以及健康情况管理.监控(单机和集群),规则 ...