如何通过bytearray响应读取Protobuf消息为字符串?
我试过查找Protobuf库。 https://developers.google.com/protocol-buffers/docs/reference/python/google.protobuf.message-pysrc#Message.MergeFrom
当我尝试mergeFrom时,mergeFromString返回获取响应。我收到了以下错误。
TypeError:MergeFrom()的参数必须是同一个类的实例:expect GetUpdateResponseMsg得到字节。
我尝试了ParseFromString api并得到了无响应。
我正在尝试将Protobuf反序列化为人类可读的格式。
还有什么我可以尝试的吗?
答案 0 :(得分:2)
您需要反序列化响应。传入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是您将作为回复获得的消息。
如果您有任何问题,请与我们联系。