Protobuf,从protoc插件获取自定义扩展值

时间:2020-02-10 18:42:50

标签: protocol-buffers protoc

我正在尝试创建一个自定义扩展名,该扩展名可以在我正在编写的自定义protoc编译器中使用。

我正在尝试编译此原型文件:

syntax = "proto3";

import "google/protobuf/descriptor.proto";

extend google.protobuf.MessageOptions {
    string my_option = 5123456;
}

message TestMessageRequest {
    option (my_option) = "Hello world!";
    uint64 value1 = 2;
    string value2 = 3;
}

我的CodeGeneratorRequest插件获得的protoc似乎在任何地方都没有此选项。这是整个请求:Google Drive Link

"Hello world!"消息在哪里可以得到值TestMessageRequest

1 个答案:

答案 0 :(得分:1)

该选项位于TestMessageRequest的描述符中:

"ProtoFile": [
{
  "Name": "google/protobuf/descriptor.proto",
  ....
  "HasOptions": true,
}

但是因为它是一个扩展字段,所以不会转换为JSON。

您应该能够以与使用任何protobuf库一样访问扩展字段的方式来访问它。这里有几种语言的示例:Python Protocol Buffer field options