2017-07-06 36 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()へのパラメータは、同じクラスのインスタンスである必要があります:expected 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は、応答として取得しますメッセージです。

質問がある場合はお知らせください。

関連する問題