2016-05-23 56 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>))