我怎样才能定义一个地图接受不同类型的节俭价值?
how can I define a map accept different kind of value in thrift?
我用thrift定义了一个结构:
struct QuerySetRecord {
1:string recordId,
2:string crawlerName,
3:string recordType,
4:map<string,string> dataMap,
5:i16 priority,
}
问题是dataMap
,我不仅要接受string
值,我可能还想接受List
或Map
,比如map<string, list<string>> dataMap
。换句话说,我想要一个像 Java 中的根 Object
、python
中的 object
这样的类型
我可以这样做吗?
您必须创建自己的 Object
并在其中列出所有可能的 类。
union Object {
1: string str;
2: i32 number32;
}
(因为我不确定联合实现在所有语言中是如何工作的,所以我会选择所有字段都是可选的结构)
struct Object {
1: optional string str;
2: optional i32 number32;
}
然后:map<string, Object>
在 Thrift 中您不能创建 'accept all' 字段,因为它不能完全跨语言移植,而这是 Thrift 的关键功能之一。
我用thrift定义了一个结构:
struct QuerySetRecord {
1:string recordId,
2:string crawlerName,
3:string recordType,
4:map<string,string> dataMap,
5:i16 priority,
}
问题是dataMap
,我不仅要接受string
值,我可能还想接受List
或Map
,比如map<string, list<string>> dataMap
。换句话说,我想要一个像 Java 中的根 Object
、python
object
这样的类型
我可以这样做吗?
您必须创建自己的 Object
并在其中列出所有可能的 类。
union Object {
1: string str;
2: i32 number32;
}
(因为我不确定联合实现在所有语言中是如何工作的,所以我会选择所有字段都是可选的结构)
struct Object {
1: optional string str;
2: optional i32 number32;
}
然后:map<string, Object>
在 Thrift 中您不能创建 'accept all' 字段,因为它不能完全跨语言移植,而这是 Thrift 的关键功能之一。