2

protobuf-net でシリアル化されたリストを送信する WCF サービスがあるとします。その関数は byte[], application/octet-stream を返します。

さて、私の Java アプリケーションでは、MyClass.proto を MyClass.java にコンパイルし、以前に送信されたデータを http から取得しました。

1つのオブジェクトを逆シリアル化するには、使用します

MyClass MyObject = MyClass.parseFrom(http_input_stream);

でも配列が来たら何を使おうかな…?

4

2 に答える 2

2

さて、私は別のプロトメッセージを作成することになりました

message MyClassCollection {
    repeated MyClass = 1;
}

次に、それをJavaクラスにコンパイルし、次のように着信配列を逆シリアル化します。

MyClassCollection MyObjects = MyClassCollection.parseFrom(http_input_stream);
于 2012-06-12T13:58:39.203 に答える
2

AList<MyClass>は実際には一連のMyClassオブジェクトとしてシリアル化され、それぞれの標準フィールド ヘッダーは1です。Java API の逆方向はわかりません。「アイテムのシーケンスを読み取る」API がある場合は、それを使用してください。ただし、信頼できるフォールバックは、完全に互換性のある次の「.proto」フラグメントです。

message Foo {
    repeated MyClass items = 1;
}

Fooデータを(名前を変更したい場合があります...)としてロードし、 : ジョブが完了しました。

于 2012-06-11T22:41:37.923 に答える