我有一些我用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成员?
任何想法如何做到这一点?提前谢谢!
答案 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>))