protobuf: определить отношения parentS <-> childrenS

Как определить отношения 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 ответ

Ты не можешь. Буферы протокола - это сериализатор на основе дерева, а не сериализатор на основе графа. Таким образом, объекты имеют только одного семантического родителя, и это неявно, а не явно. Имея в виду:

message Root {
     repeated Category category = 2;  
}

message Category {
     string name = 2;
}

Родитель каждой категории просто: какой узел был над ним в дереве. Если вы попытаетесь создать явное родительское отношение, сериализация не удастся из-за рекурсии.

Другие вопросы по тегам