如何表示可以在Apache Thrift中具有一种以上类型的值?

问题描述 投票:0回答:1

完全可以使用Thrift来表示类似Java类型Map之类的东西,其中Map中的值已知为例如。是字符串还是整数?

换句话说,在实际的基本类型仅在运行时知道但保证是预先知道的一组类型之一的情况下,有任何方法可以表示这些值。

是否有高性能串行化的替代方法可以做到这一点?

我目前正在将JSON与所需代码的手动实现一起使用Java和Python,但是以一种更有序的方式解决此问题将非常不错。

thrift
1个回答
0
投票

节俭要求您指定一种类型。该类型可以是structunion之类的结构化类型,但是必须是一种类型:

union Anything {
  1: string s
  2: i64    i
  3: double d
}

service foo {
   Anything  bar(1: Anything anyArg)
}

但是,如果您打算使用JSON并以某种方式将JSON数据包装到Thrift消息中,那么您可能想使用string。另一方面,如果您仅像[

中那样交换此类JSON字符串,
service foo {
   string  bar(1: string json)
}

然后在某种程度上会提出一个问题,即节俭是否是工作的正确工具。它可能仍然存在,但是您需要自己负责JSON序列化/反序列化...

© www.soinside.com 2019 - 2024. All rights reserved.