反序列化protobuf java数组

时间:2012-06-11 16:56:32

标签: java protocol-buffers

Supose我有一个WCF服务,它发送使用protobuf-net序列化的List。该函数返回byte [],application / octet-stream。

现在,在我的java应用程序中,我已将MyClass.proto编译为MyClass.java,并从http获取之前发送的数据。

要反序列化1个对象,我将使用

MyClass MyObject = MyClass.parseFrom(http_input_stream);

但是,如果阵列出现,我该怎么用?

2 个答案:

答案 0 :(得分:2)

List<MyClass>实际上被序列化为一系列MyClass个对象,每个对象都有1的标准字段标题。我不知道java API向后:如果它有一个“读取项目序列”API,那么:使用它。但是,可靠的后备是以下,完全兼容的“.proto”片段:

message Foo {
    repeated MyClass items = 1;
}

将数据加载为Foo(您可能需要重命名...)和:已完成工作。

答案 1 :(得分:1)

好吧,我最后创建了另一个原型消息

message MyClassCollection {
    repeated MyClass = 1;
}

然后将其编译为java类并反序列化传入的数组,如

MyClassCollection MyObjects = MyClassCollection.parseFrom(http_input_stream);