2017-07-06 112 views
3

如何通過bytearray響應讀取Protobuf消息作爲字符串?反序列化Python中的Protobuf 3 bytearray

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

當我嘗試mergeFrom,mergeFromString來獲取響應回來。我正在低於錯誤。

TypeError:MergeFrom()的參數必須是相同類的實例:預期GetUpdateResponseMsg獲取字節。

我嘗試了ParseFromString api並得到了無迴應。

我想將Protobuf反序列化回人類可讀的格式。

還有什麼我可以嘗試嗎?

回答

2

您需要反序列化響應。在類/ 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是消息,您將得到儘可能響應。

讓我知道如果您有任何問題。