Java Protobuff如何动态地获取字段选项,并在键和值为字符串的映射中强制转换它们
我正在使用Proto 3并使用以下选项:Java Protobuff如何动态地获取字段选项,并在键和值为字符串的映射中强制转换它们,java,scala,protocol-buffers,proto,Java,Scala,Protocol Buffers,Proto,我正在使用Proto 3并使用以下选项: syntax = "proto3"; package com.message.user; import "google/protobuf/timestamp.proto"; import "message/address.proto"; option java_multiple_files = true; message Users { int32 id = 2; strin
syntax = "proto3";
package com.message.user;
import "google/protobuf/timestamp.proto";
import "message/address.proto";
option java_multiple_files = true;
message Users {
int32 id = 2;
string first_name = 4;
string last_name = 5;
string work_city = 8;
string work_state = 9;
Address address = 24 [
(com.castlight.apollo.proto.message.address).city = "$.work_city",
(com.castlight.apollo.proto.message.address).state = "$.work_state"
];
}
如上所述,我使用字段选项作为地址
Address address = 24 [
(com.castlight.apollo.proto.message.address).city = "$.work_city",
(com.castlight.apollo.proto.message.address).state = "$.work_state"
];
现在在我的scala代码中,我想动态地获取字段选项
我的scala代码:
val fieldOptionDescriptor: FieldDescriptor = CustomOptionsProto.getDescriptor.findExtensionByName(field.getMessageType.getName.toLowerCase)
val fieldValues = field.getOptions.getField(fieldOptionDescriptor)
我的问题是,现在如何对字段值进行装箱,以便获得字段地图
因此,预期地图应为:
(city -> $.work_city),
(state -> $.state)
现在我正在使用toString函数获取fieldValues
的字符串值,然后将字符串转换为映射。但是玩toString可能会很棘手,所以在不使用toString的情况下寻找帮助来获取地图
注意:我不想给出地址的引用,因为会有更多类似于地址的Proto,并且对于每个新Proto,我不想添加代码