2017-08-24 166 views
0

我试过这个,但有范围问题。有没有在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有未解析的引用。

+0

消息SubDataList重复的字符串数据= 1; } 消息子数据 { map parameters = 1;数据收集消息 { } map parameters = 1; } –

+0

看起来你已经解决了你的问题,这很好。您可以将该评论写为答案并将其标记为已接受,或者如果您认为该评论对其他人没有价值,请将其删除。 – tom

+0

如果您的评论不是您的问题的解决方案,请解释您现在得到的错误消息(因为它对我来说很合适)。 – tom

回答

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有一个ProtocolStringList,这就像List<String>

如果您得到不同的结果,请发布您正在使用的protobuf文件以及生成的Java代码的相关部分。

相关问题