Protocol buffers 在proto中,如何将地图定义为自定义选项
在我的proto文件中,我想将一个映射定义为一个自定义选项,尝试了一些方法,但没有一个有效 我的元数据原型文件:Protocol buffers 在proto中,如何将地图定义为自定义选项,protocol-buffers,protobuf-net,proto,protobuf-java,protobuf.js,Protocol Buffers,Protobuf Net,Proto,Protobuf Java,Protobuf.js,在我的proto文件中,我想将一个映射定义为一个自定义选项,尝试了一些方法,但没有一个有效 我的元数据原型文件: syntax = "proto2"; import "google/protobuf/descriptor.proto"; package com.util; option java_package = "com.util"; message MyMeta { optional bool needValidation = 1; map<string, string&
syntax = "proto2";
import "google/protobuf/descriptor.proto";
package com.util;
option java_package = "com.util";
message MyMeta {
optional bool needValidation = 1;
map<string, string> fileMap = 2;
}
extend google.protobuf.FieldOptions {
optional MyMeta meta = 80412;
}
这可能吗?似乎不可能。为了实现我的逻辑,我创建了一个类似“StoreOrders:raw\u orders\u test,OrderItems:raw\u order\u items\u test”的字符串
message MyMeta {
int32 id = 1 [(com.util.meta).needValidation = false, (com.meta).tableOptions = "TableA:valueA,TableB:valueB;
}
并在我的jav代码中,拆分字符串以创建一个哈希映射。这样做:
消息MyMeta{
int32 id=1[
(com.util.meta)={
需要验证:错误,
文件映射:[
{
键:“t”,
价值:“原始订单”
}
];
}];
}
protobufmap
是映射条目消息的重复
字段的语法糖,其中包含键
和值
字段
在您的情况下,您的元消息
消息MyMeta{
可选bool-needValidation=1;
map fileMap=2;
}
相当于
消息MyMeta{
可选bool-needValidation=1;
消息文件映射项{
字符串键=1;
字符串值=2;
}
重复FileMapEntry fileMap=2;
}
当然,如果有一种更明显的方法来指定选项中的映射值,那就更好了
message MyMeta {
int32 id = 1 [(com.util.meta).needValidation = false, (com.meta).tableOptions = "TableA:valueA,TableB:valueB;
}