0

我有一些使用 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 成员?

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

4

2 回答 2

1

你不需要TSerializer,那是为了“香草”节俭,而不是为了 scrooge 生成的课程。你需要做这样的事情:

val transport = TMemoryBuffer(1024) // or whatever 
err.write(new TBinaryProtocol(transport))
val binary = transport.getArray
于 2016-05-23T14:00:06.243 回答
0

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

import com.twitter.scrooge.JsonThriftSerializer
val serializer = JsonThriftSerializer(<scrooge-generated-classes>._codec)
Json.toJson(serializer.toString(<scrooge-generated-classes>))
于 2017-11-02T11:33:10.610 回答