从Java协议缓冲区提取所有可能的字段路径
我有一套符合Java协议的缓冲区。我需要从中提取所有可能的字段,我可以在事先不知道协议缓冲区结构的情况下进行吗 想象一下我有个口信从Java协议缓冲区提取所有可能的字段路径,java,protocol-buffers,Java,Protocol Buffers,我有一套符合Java协议的缓冲区。我需要从中提取所有可能的字段,我可以在事先不知道协议缓冲区结构的情况下进行吗 想象一下我有个口信 message Person { required string name = 1; required int32 id = 2; optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneN
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;
}
我需要一些可以为我打印的东西([*]代表重复字段)
我只有java类,我该怎么做呢?您可以使用与
Person
(Person.getDescriptor()
)关联的描述符来查找字段列表。实际上,我无法判断您是否只想打印字段的名称或它们的值,但您可以使用描述符进行打印。您可以使用与Person
关联的描述符(Person.getDescriptor()
)来查找字段列表。我实际上无法判断您是否只想打印字段的名称或它们的值,但您可以使用描述符进行打印。
Person.name
Person.id
Person.email
person.phones[*]
person.phones[*].number
person.phones[*].type
person.phones[*].location.name