在 Scala 中从 Thrift 生成的 类 创建 TBase 对象

Create TBase objects from Thrift-generated classes in Scala

我有一些用 Thrift (Scrooge) 生成的 Scala classes。现在我需要以某种方式将它们实例化为 TBase class、b/c TSerializer class 需要它作为输入

这是我的方法:

  def createTestBinary(): String = {
    val proto = new TBinaryProtocol.Factory
    val err = new ClientError{}
    val binary = new TSerializer().serialize(err)
    ""
  }

ClientError 是生成的 class。如何实例化它或将其包装为 TBase 成员?

有什么办法吗?提前致谢!

您不需要 TSerializer,那是为了 "vanilla" 节俭,而不是为了吝啬鬼产生的 类。 你需要做这样的事情:

val transport = TMemoryBuffer(1024) // or whatever 
err.write(new TBinaryProtocol(transport))
val binary = transport.getArray

对于 scrooge 生成的 类 你可以使用 JsonThriftSerializer:

import com.twitter.scrooge.JsonThriftSerializer
val serializer = JsonThriftSerializer(<scrooge-generated-classes>._codec)
Json.toJson(serializer.toString(<scrooge-generated-classes>))