如何定义地图在节俭中接受不同类型的值?

时间:2015-08-12 07:13:15

标签: java python object dictionary thrift

我用thrift定义了一个结构:

struct QuerySetRecord {
    1:string recordId,
    2:string crawlerName,
    3:string recordType,
    4:map<string,string> dataMap,
    5:i16 priority,
}

问题是dataMap,我不仅希望接受string值,我可能仍想接受ListMap,例如{{1} }}。换句话说,我想要一个类似Java中的根map<string, list<string>> dataMap,python中的Object

我可以这样做吗?

1 个答案:

答案 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的关键功能之一。