我用thrift定义了一个结构:
struct QuerySetRecord {
1:string recordId,
2:string crawlerName,
3:string recordType,
4:map<string,string> dataMap,
5:i16 priority,
}
问题是dataMap
,我不仅希望接受string
值,我可能仍想接受List
或Map
,例如{{1} }}。换句话说,我想要一个类似Java中的根map<string, list<string>> dataMap
,python中的Object
我可以这样做吗?
答案 0 :(得分:2)
您必须创建自己的Object
并列出其中所有可能的类。
union Object {
1: string str;
2: i32 number32;
}
(因为我不确定联合实现在所有langs中是如何工作的,我会使用struct并且所有字段都是可选的)
struct Object {
1: optional string str;
2: optional i32 number32;
}
然后:map<string, Object>
在Thrift中,您无法创建“全部接受”字段,因为它无法跨语言完全移植,而且这是Thrift的关键功能之一。