目录
一、python快的解析Protobuf方式
注意:目录二、三、四、五可以作为了解,实际上目录一就可以解决了,比后面的解决方式更便捷,后面介绍的解决方式的前提是还原.proto文件。如果解决不了的话,再看二、三、四、五也可
- 1、问题案例:请求参数和响应参数都是序列化的数据结构,不易读。两个名词
序列化
(将正常可读数据转为protobuf的数据结构,看似是乱码的形式),非序列化
反之
- 2、解决方案:
-
依赖安装:
pip install blackboxprotobuf
-
如果要将数据转为序列化数据,则需先确认
message_type
(Type information including field number, field name and field type),如何确认message_type,我们可以将非序列化的数据复制下来,如下赋值给a变量,然后可以得到消息类型message_type;如果下面代码无法运行,a变量的这个数据换成你自己的import blackboxprotobuf a = "?2???2?? ·??".encode() deserialize_data , message_type =blackboxprotobuf.protobuf_to_json(a) print(deserialize_data ) # 非序列化的原始数据 print(message_type) # 消息类型结构
-
将数据
序列化
样例如下,有了消息类型message_type,我们就可以将数据转为序列化数据了,如下import blackboxprotobuf message_type = {'1': {'type': 'int', 'name': ''}, '2': {'type': 'int', 'name': ''}, '3': {'type': 'int', 'name': ''}, '4': {'type': 'int', 'name': ''}} before_data = {'1': 1, '2': 312312312442, '3': 8709708978, '4': 78971987} form_data = blackboxprotobuf.encode_message(before_data, message_type) print(form_data)
-
将数据
非序列化
样例如下,直接传入字节content,即可输出jsonimport blackboxprotobuf content = b'??)?) ?(?#0?(8?"@tBHò:Pí' print(blackboxprotobuf.protobuf_to_json(content)) # ('{ "1": "3231", "2": "5308", "3": "5289", "4": "3231", "5": "4486", "6": "5191", "7": "4385", "8": "8574", "9": "7506", "10": "461" }', {'1': {'type': 'int', 'name': ''}, '2': {'type':
-