Извлечь все возможные пути к полям из Java буферов протокола - PullRequest
1 голос
/ 14 июля 2020

У меня есть набор Java протокольных буферов. Мне нужно извлечь из него все возможные поля, могу ли я сделать это без знания структуры буфера протокола заранее?

Представьте, что у меня есть сообщение

message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;

  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }

  message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
    required PhoneLocation location = 3;
  }

  repeated PhoneNumber phones = 4;
}

message PhoneLocation {
  required string name = 1;
}

Мне нужно что-то, что напечатает для меня ([*] означает повторяющееся поле)

Person.name
Person.id
Person.email
person.phones[*]
person.phones[*].number
person.phones[*].type
person.phones[*].location.name

У меня только класс java, как мне это сделать?

...