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

时间:2016-05-23 12:24:59

标签: scala binary thrift scrooge

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

这是我的方法:

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

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

任何想法如何做到这一点?提前谢谢!

2 个答案:

答案 0 :(得分:1)

你不需要TSerializer,那是" vanilla"节俭,不是scrooge生成的类。 你需要做这样的事情:

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

答案 1 :(得分:0)

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

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