Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java协议缓冲区提取所有可能的字段路径_Java_Protocol Buffers - Fatal编程技术网

从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

我有一套符合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;
}
我需要一些可以为我打印的东西([*]代表重复字段)


我只有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