2012-06-11 79 views
1

Supose我有一個WCF服務,它發送序列化爲protobuf-net的List。該函數返回byte [],application/octet-stream。反序列化protobuf java數組

現在,在我的Java應用程序中,我已經將MyClass.proto編譯到MyClass.java中,並從http獲取之前發送的數據。

反序列化對象1,我將使用

MyClass MyObject = MyClass.parseFrom(http_input_stream); 

但是我拿什麼來使用,如果一個數組來... ...?

+0

你是什麼意思「如果一個數組來... ?」 ?我假設你的java代碼是基於一個.proto,它*可能*的數據是'重複'的。它*應該*只填充到正確的數據結構中。假設你設法將相同的基礎數據('byte []')轉換成你在C#中生成的java(首先檢查:如果你還沒有設法成功傳輸byte []',所有的賭注都關閉) –

回答

1

A List<MyClass>實際上被序列化爲MyClass對象的序列,每個對象都有一個標準字段標題1。我不知道向後的java API:如果它有一個「讀取一系列項目」API,那麼:使用它。然而,值得信賴的後備如下,完全兼容「.proto」片段:

message Foo { 
    repeated MyClass items = 1; 
} 

加載數據作爲Foo(您可能要重命名...)和:做的工作。

1

嗯,我結束了創建另一個原消息

message MyClassCollection { 
    repeated MyClass = 1; 
} 

然後它編譯成Java類和反序列化傳入的數組一樣

MyClassCollection MyObjects = MyClassCollection.parseFrom(http_input_stream); 
相關問題