2

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

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

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

MyClass MyObject = MyClass.parseFrom(http_input_stream);

但是如果一个数组来了我应该用什么......?

4

2 回答 2

2

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

message Foo {
    repeated MyClass items = 1;
}

将数据加载为Foo(您可能想要重命名......)并且:工作完成。

于 2012-06-11T22:41:37.923 回答
2

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

message MyClassCollection {
    repeated MyClass = 1;
}

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

MyClassCollection MyObjects = MyClassCollection.parseFrom(http_input_stream);
于 2012-06-12T13:58:39.203 回答