Десериализовать Protobuf 3 bytearray в Python
Как прочитать сообщение Protobuf через ответ bytearray в виде строки?
Я попытался найти библиотеку Protobuf. https://developers.google.com/protocol-buffers/docs/reference/python/google.protobuf.message-pysrc
Когда я попробовал mergeFrom, mergeFromString, чтобы получить ответ обратно. Я получаю ниже ошибки.
TypeError: Параметр для MergeFrom() должен быть экземпляром того же класса: ожидается, что GetUpdateResponseMsg получит байты.
Я попробовал API ParseFromString и получил ответ None.
Я пытаюсь десериализовать Protobuf обратно в читаемый человеком формат.
Есть ли что-нибудь еще, что я могу попробовать?
1 ответ
Вы должны десериализовать ответ. Передайте тип 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 - это сообщение, которое вы получите в ответ.
Дайте знать, если у вас появятся вопросы.