1

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

syntax = "proto3";

message Root {
     repeated Category category = 2;  
}

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

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

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

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

谢谢

4

1 回答 1

2

你不能。协议缓冲区是基于“树”的序列化程序,而不是基于“图”的序列化程序。因此,对象只有一个语义父级,这是隐式的 - 不是显式的。意义:

message Root {
     repeated Category category = 2;  
}

message Category {
     string name = 2;
}

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

于 2018-07-19T08:30:46.250 回答