xpath就像查询protobuf消息一样

时间:2015-02-13 17:16:43

标签: xpath protocol-buffers jsonpath

我正在为protobuf消息寻找类似xpath的查询语言。例如,对于[从开发者指南中借用]下面显示的Person消息

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];
  }

  repeated PhoneNumber phone = 4;
}

我想要像

这样的方法
XPBQuery.get(person, "$.id") ==> returns the id
XPBQuery.get(person, "$.name") ==> returns the name
XPBQuery.get(person, "$.phone.number[0]") ==> returns the first phone number

一种方法是将proto转换为Json并使用JsonPath / JsPath API。但是每次转换为Json可能都很昂贵,特别是对于大型Proto对象。

非常感谢任何帮助。

谢谢, 伊尔凡

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

在寻找类似问题的解决方案时,我发现:

(我没有使用这些库,因为我的目标语言是C ++,但希望这可以帮助其他人)

祝你好运!