我在google protobuf中有一系列文件序列化,但想知道是否有一种快捷方式将这些较小的文件连接成一个较大的protobuf,而不必担心阅读每个protobuf然后分组这些对象并输出。
有没有一种便宜的方式将文件连接在一起?即如何序列化每个文件?
答案 0 :(得分:1)
您可以通过简单连接组合协议缓冲区消息。您希望结果形成一个数组,因此您需要将每个单独的文件序列化为数组本身:
message MyItem { ... } message MyCollection { repeated MyItem items = 1; }
现在,如果您将每个文件序列化为MyCollection
然后将它们连接起来(只是将原始二进制数据放在一起),那么生成的文件可以作为一个大型集合本身读取。
答案 1 :(得分:1)
除了jpa的回答之外,可能有必要说数据在序列化时不需要在完全相同的容器中,因为它在反序列化时是兼容的。
请考虑以下信息:
message FileData{
required uint32 versionNumber = 1;
repeated Data initialData = 2;
}
message MoreData{
repeated Data data = 2;
}
可以将这些不同的消息序列化为一个数据容器,并将其反序列化为一条FileData
条消息,只要FileData
在零或更多MoreData
之前序列化即可同时,FileData
和MoreData
具有相同的重复字段索引。