问题中的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 代码的相关部分。