Proto 3:在字段级别添加元数据的方法



我使用protobuf-gradle插件从proto文件生成java类。

我的原始文件看起来像

syntax = "proto3";
package com.address;
option java_package = "com.address";

message AddressesMessage {
int32 id = 1;
string address_line_1 = 4;
string address_line_2 = 5;
string city = 7;
string postal_code = 9;
string country = 10;
}

插件正在为我生成类,但现在我想在字段级别添加一些元数据信息。像

syntax = "proto3";
package com.address;
option java_package = "com.address";

message AddressesMessage {
int32 id = 1 [ (meta) = { isfact: false }];
string address_line_1 = 4;
string address_line_2 = 5;
string city = 7;
string postal_code = 9;
string country = 10;
}

这可能吗?

是的,这可以通过自定义选项实现,但是:您需要在一个单独的proto2模式中定义您的自定义选项,然后由proto3模式导入。

类似于(对于您的proto2模式,未经测试(:

syntax = "proto2";
import "google/protobuf/descriptor.proto";
package MetaPackage;
message MyMeta {
optional bool isFact = 1;
}
extend google.protobuf.FieldOptions {
optional MyMeta meta = 80412; // numbering: search for "One last thing" in the link above
}

然后添加:

import "MyMeta.proto";

到您的proto3模式,它应该工作。不过,访问元数据是另一个主题!请参阅上面的链接。

最新更新