2016-05-23 60 views
0

我有一些用Thrift(Scrooge)生成的Scala类。现在,我需要以某种方式实例为那些TBASE类,B/C的TSerializer类需要以此为输入在Scala中创建Thrift生成的类的TBase对象

这是我的方法:

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

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

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

回答

1

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

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

的守财奴生成的类可以使用JsonThriftSerializer:

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