3
我想知道如何檢索從字節加載的protobuf的類型。Google協議緩衝區反序列化類型
例:
Worklist work = Worklist.newBuilder().build();
byte[] msg = work.toByteArray();
基本上我需要找到一種方法來檢索味精類型,應打印工作表。
謝謝。
我想知道如何檢索從字節加載的protobuf的類型。Google協議緩衝區反序列化類型
例:
Worklist work = Worklist.newBuilder().build();
byte[] msg = work.toByteArray();
基本上我需要找到一種方法來檢索味精類型,應打印工作表。
謝謝。
Protobuf消息不是固有的自我描述。您需要知道之前的消息類型,您解析字節。在你的情況下,解析字節數組msg的代碼必須知道這些字節表示一個Worklist,然後調用Worklist類中的解析實現。
但是,如Techniques中所述,您可以設計將其元數據作爲有效負載的一部分提供的類。
[更新]
另一種方法 - 特別是當使用的protobuf用於發送創建的消息/接收是定義一個頂層消息類別。所有發送/接收的消息都屬於這種類型。然後,對於此消息中可能包含的各種類型的內容(例如WorkItem),請使用protobuf擴展。我認爲extensions上的文檔比自描述消息要好一些。
雙方都需要知道可用的擴展,但一旦你已經解析了消息,你可以動態查詢消息對象,看看哪些擴展(如工作項)已填寫。
自我描述的技術似乎要走的路,但我不知道如何使用它。該文檔對於這個特殊功能來說很差。 – user1757189
同意 - 請參閱更新另一種方法。 –
好主意,工作正常:) – user1757189