在 python 中反序列化 Protobuf 3 字节数组
Deserialize Protobuf 3 bytearray in python
如何通过 bytearray 响应读取 Protobuf 消息作为字符串?
我尝试查找 Protobuf 库。
https://developers.google.com/protocol-buffers/docs/reference/python/google.protobuf.message-pysrc#Message.MergeFrom
当我尝试 mergeFrom 、 mergeFromString 来取回响应时。我遇到错误。
TypeError:MergeFrom() 的参数必须是相同的实例class:预期的 GetUpdateResponseMsg 有字节。
我尝试了 ParseFromString api 并得到了 None 响应。
我正在尝试将 Protobuf 反序列化回人类可读的格式。
还有什么我可以尝试的吗?
您需要反序列化响应。将 class/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 是您将收到的回复消息。
如果您有任何问题,请告诉我。
如何通过 bytearray 响应读取 Protobuf 消息作为字符串?
我尝试查找 Protobuf 库。 https://developers.google.com/protocol-buffers/docs/reference/python/google.protobuf.message-pysrc#Message.MergeFrom
当我尝试 mergeFrom 、 mergeFromString 来取回响应时。我遇到错误。
TypeError:MergeFrom() 的参数必须是相同的实例class:预期的 GetUpdateResponseMsg 有字节。
我尝试了 ParseFromString api 并得到了 None 响应。
我正在尝试将 Protobuf 反序列化回人类可读的格式。
还有什么我可以尝试的吗?
您需要反序列化响应。将 class/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 是您将收到的回复消息。
如果您有任何问题,请告诉我。