• 第十九天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'x85xa1axc0xa1bxc3xa1cxc2xa1dx92x01xa3abcxa1ex82xa1ax01xa1bx02'
    27 <class 'bytes'>
    
    #从上面结果可看出,用msgpack序列化后比json序列化后节省好多字节;
  • 相关阅读:
    娿
    我不知道啊
    Android怎么把引入的library库工程转换成jar包
    高斯消元入门和简单应用
    数论函数基本知识
    AC自动机入门和简单应用
    FFT和NTT
    同余系基本知识
    虚树学习笔记
    Windows常用快捷键和基本的Dos命令
  • 原文地址:https://www.cnblogs.com/zhangzhide/p/15125283.html
Copyright © 2020-2023  润新知