假设我有一个 WCF 服务,它发送用 protobuf-net 序列化的列表。该函数返回 byte[]、application/octet-stream。
现在,在我的 java 应用程序中,我已将 MyClass.proto 编译为 MyClass.java 并从 http 获取之前发送的数据。
要反序列化 1 个对象,我将使用
MyClass MyObject = MyClass.parseFrom(http_input_stream);
但是如果数组来了……我该用什么?
最佳答案
一个List<MyClass>
实际上被序列化为 MyClass
的序列对象,每个对象都有一个标准字段 header 1
。我不知道 java API 向后:如果它有一个“读取项目序列”API,那么:使用它。然而,一个可靠的后备是以下完全兼容的“.proto”片段:
message Foo {
repeated MyClass items = 1;
}
将数据加载为Foo
(你可能想重命名它......)并且:工作完成。
关于java - 反序列化protobuf java数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10984402/