python-3.x - 在python中反序列化Protobuf 3 bytearray

标签 python-3.x protobuf-3

如何通过字节数组响应以字符串形式读取 Protobuf 消息?

我尝试查找 Protobuf 库。
https://developers.google.com/protocol-buffers/docs/reference/python/google.protobuf.message-pysrc#Message.MergeFrom

当我尝试 mergeFrom 时, mergeFromString 取回响应。我得到低于错误。

类型错误:MergeFrom() 的参数必须是同一类的实例:预期的 GetUpdateResponseMsg 得到了字节。

我尝试了 ParseFromString api 并得到了 None 响应。

我正在尝试将 Protobuf 反序列化回人类可读的格式。

还有什么我可以尝试的吗?

最佳答案

您需要反序列化响应。将类/protobuf 类型与消息一起传入,您应该会得到格式为..的响应。
示例示例是:

from BusinessLayer.py.GetDealUpdateData_pb2 import GetDealUpdateResponseDM
from importlib import import_module
def deserialize(byte_message, proto_type):
    module_, class_ = proto_type.rsplit('.', 1)
    class_ = getattr(import_module(module_), class_)
    rv = class_()
    rv.ParseFromString(byte_message)
    return rv

print (deserialize(byte_message, 'BusinessLayer.py.GetDealUpdateData_pb2.GetDealUpdateResponseDM'))

byte_message 是您将作为响应收到的消息。

如果您有任何问题,请告诉我。

关于python-3.x - 在python中反序列化Protobuf 3 bytearray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44946492/

相关文章:

go - 如何在 protobuf3 中存储 time.duration

protobuf-java - Protocol Buffer 3 : What happens when all fields of an object happen to be set to default value

c# - 在 C#/.NET 中使用 protobuf3 发送通用数据类型的正确方法

Python - 打字 - 可订阅类型的联合

python - python 3.6 及更早版本与 3.7 中不可变对象(immutable对象)的 "is"行为不一致

python - 如何用以前的值替换列表中的无

Python 3 十进制四舍五入与 ROUND_HALF_UP 上下文

python - 将嵌套元组转换为嵌套字典