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