2016-05-19 235 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