¿Cómo puedo definir un mapa para aceptar diferentes tipos de valor en thrift?

Yo defino una estructura con ahorro

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

el problema es el dataMap , no solo quiero aceptar el valor de la string , es posible que todavía desee aceptar List o Map , como map<string, list> dataMap . En otras palabras, quiero un tipo como el Object raíz en Java, object en python

¿Puedo hacer esto?

Tendrías que crear tu propio Object y listar todas las clases posibles en él.

 union Object { 1: string str; 2: i32 number32; } 

(como no estoy seguro de cómo funciona la implementación de la unión en todos los idiomas, iría con struct con todos los campos opcionales)

 struct Object { 1: optional string str; 2: optional i32 number32; } 

y luego: map

En Thrift, no puede crear el campo ‘aceptar todo’, ya que no puede ser totalmente transportable en todos los idiomas, y esa es una de las funcionalidades clave de Thrift.