protobuf:定义parentS <-> childrenS关系

时间:2018-07-16 17:06:17

标签: protocol-buffers proto3

如何在原型中定义parentS <-> childrenS关系

syntax = "proto3";

message Root {
     repeated Category category = 2;  
}

message Category {
     string name = 2;
     repeated Category parent = 3; 
}

这里的关键是我希望能够召集孩子们

MamyCategoryInstance
|
|--- FooCategoryInstance
...//

PapaCategoryInstance
|
|---- FooCategoryInstance
|---- BarCategoryInstance

谢谢

1 个答案:

答案 0 :(得分:1)

您不能。协议缓冲区是基于“树”的序列化器,而不是基于“图形”的序列化器。这样,对象只有一个语义父对象,这是隐式的-不显式的。含义:

message Root {
     repeated Category category = 2;  
}

message Category {
     string name = 2;
}

每个类别的父级都是:树中位于其上方的哪个节点。如果尝试创建显式父关系,则由于递归,序列化将失败。