2016-05-19 278 views
0

我想在斯卡拉desrialize二進制消息反序列化二進制節儉消息:在斯卡拉

val deserializer = new TDeserializer(new TBinaryProtocol.Factory()); 
    try { 
     val obj = deserializer.deserialize(new ClientError{}, input._2.toArray) 

哪裏ClientError是從節儉文件與守財奴產生的特質。問題是,deserialize()期望TBase對象,但TBase是一個接口。我該怎麼做呢?我是否必須創建一個實現兩者的新類? Thx任何幫助!

回答

0

試試這個:

def decode(bytes: Array[Byte]): ClientError = { 
    val protocolFactory = new TBinaryProtocol.Factory 
    val buffer = new TMemoryInputTransport(bytes) 
    val proto = protocolFactory.getProtocol(buffer) 
    ClientError.decode(proto) 
} 
+0

謝謝!我無法測試,但我無法生成測試數據b/c,我無法序列化(相同的原因)。你能簡單地向我解釋兩種方法和Serializer,TBase和用scrooge生成的類/特性之間的上下文之間的區別嗎? – olkoza