自定义protoc插件解析不能用于自定义选项

我正在尝试编写一个需要我使用自定义选项的protoc插件。 我按照示例(https://developers.google.com/protocol-buffers/docs/proto#customoptions)中所示定义了我的自定义选项:

import "google/protobuf/descriptor.proto";

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

我使用它如下:

message Hello {
    bool greeting = 1;
    string name = 2;
    int32 number = 3;

    option (my_option) = "telephone";
}

但是,当我读取解析的请求时,“Hello”消息的选项字段为空。

我正在阅读以下内容

data = sys.stdin.read()

request = plugin.CodeGeneratorRequest()
request.ParseFromString(data)

当我打印“请求”时,它只是给了我这个

message_type {
  name: "Hello"
  field {
    name: "greeting"
    number: 1
    label: LABEL_REQUIRED
    type: TYPE_BOOL
    json_name: "greeting"
  }
  field {
    name: "name"
    number: 2
    label: LABEL_REQUIRED
    type: TYPE_STRING
    json_name: "name"
  }
  field {
    name: "number"
    number: 3
    label: LABEL_OPTIONAL
    type: TYPE_INT32
    json_name: "number"
  }
  options {
  }
}

正如所看到的,即使我在.proto文件中定义了选项,选项字段也是空的。 我的语法是否对定义自定义选项不正确? 或者可能是我的protoc版本有问题?


事实证明,您需要为定义了自定义选项的.proto文件导入_pb2.py文件。 例如,你在解析文件(使用ParseFromString )呼吁example.proto它使用定义的自定义选项option.proto ,必须导入option_pb2.py在调用Python的文件ParseFromString

链接地址: http://www.djcxy.com/p/64797.html

上一篇: Custom protoc plugin parsing not working for custom options

下一篇: Undefined method for encode/decode