我试过这个但是有范围问题。
message DataCollectionMessage {
message subData
{
message SubDataList {
repeated string data = 1;
}
map<string, subData> parameters = 1;
}
map<string,SubDataList> parameters =1;
}
这里SubDataList和subData有未解析的引用。
答案 0 :(得分:0)
问题中的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
的{{1}}与ProtocolStringList
类似。
如果得到不同的结果,请发布您正在使用的protobuf文件以及生成的Java代码的相关部分。