Protobuf, получение пользовательских значений расширения из плагина proto c - PullRequest
1 голос
/ 10 февраля 2020

Я пытаюсь создать собственное расширение, которое я могу использовать в настраиваемом компиляторе 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 Ответ

1 голос
/ 12 февраля 2020

Опция есть в дескрипторе TestMessageRequest:

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

, но, поскольку это поле расширения, оно не преобразуется в JSON.

. иметь доступ к нему так же, как к полям расширений в любой используемой вами библиотеке protobuf. Здесь приведены примеры для нескольких языков: Python Опции поля «Буфер протокола»

...