有没有在protobuf 3中实现map >>的方法?
问题描述:
我试过这个,但有范围问题。有没有在protobuf 3中实现map <string,map <string,list <string> >>的方法?
message DataCollectionMessage {
message subData
{
message SubDataList {
repeated string data = 1;
}
map<string, subData> parameters = 1;
}
map<string,SubDataList> parameters =1;
}
这里SubDataList和subData有未解析的引用。
答
只是有一个在问题的protobuf的小问题:最里面的地图使用subData
和外部映射使用SubDataList
,但它应该是倒过来:
message DataCollectionMessage {
message SubData {
message SubDataList {
repeated string data = 1;
}
map<string, SubDataList> parameters = 1;
}
map<string, SubData> parameters = 1;
}
(我也已经大写SubData
一致性)
生成的Java代码将具有以下类(剪断和重新排序为清楚起见):
public static final class DataCollectionMessage {
public Map<String, DataCollectionMessage.SubData> getParametersMap() { ... }
public static final class SubData {
public Map<String, DataCollectionMessage.SubData.SubDataList> getParametersMap() { ... }
public static final class SubDataList {
public ProtocolStringList getDataList() { ... }
}
}
}
请注意,SubDataList
有一个ProtocolStringList
,这就像List<String>
。
如果您得到不同的结果,请发布您正在使用的protobuf文件以及生成的Java代码的相关部分。
消息SubDataList重复的字符串数据= 1; } 消息子数据 { map parameters = 1;数据收集消息 { } map parameters = 1; } –
看起来你已经解决了你的问题,这很好。您可以将该评论写为答案并将其标记为已接受,或者如果您认为该评论对其他人没有价值,请将其删除。 – tom
如果您的评论不是您的问题的解决方案,请解释您现在得到的错误消息(因为它对我来说很合适)。 – tom