我用节俭定义了一个结构:
struct QuerySetRecord {
1:string recordId,
2:string crawlerName,
3:string recordType,
4:map<string,string> dataMap,
5:i16 priority,
}
问题是dataMap,我不仅要接受字符串值,我可能仍想接受List或Map,例如map< string,list< string>数据图.换句话说,我想要一个类型,例如Java中的root Object,Python中的object
我可以这样做吗?
解决方法:
您将必须创建自己的Object并列出其中的所有可能的类.
union Object {
1: string str;
2: i32 number32;
}
(因为我不确定在所有语言中联合实现的工作方式,我会选择带有所有字段可选的struct)
struct Object {
1: optional string str;
2: optional i32 number32;
}
然后:map< string,Object>
在Thrift中,您无法创建“ accept all”(全部接受)字段,因为它不能跨语言完全移植,这是Thrift的主要功能之一.