有没有办法在 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;
}

此处的子数据列表和子数据具有未解析的引用。

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

相关内容

最新更新