2016-05-23 4 views
0

私はThrift(Scrooge)で生成したScalaクラスをいくつか持っています。Scriftで生成されたスリフト生成クラスからTBaseオブジェクトを作成

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

ClientErrorが生成されたクラスです。今、私は何とかTSerializerクラスが入力

としてこれを必要とするB/C、TBASEクラスとして、それらをインスタンス化する必要があり、この私のアプローチです。それをインスタンス化したり、TBaseメンバーとしてラップするにはどうしたらいいですか?

どのようにすればいいですか?前もって感謝します!

答えて

1

TSerializerは、「バニラ」倹約用であり、スクローゼ生成クラス用ではありません。 あなたはこの代わりのような何かをする必要があります。

スクルージ-生成されたクラスの
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>)) 
関連する問題