我正在尝试在Scala中对二进制消息进行去序列化:
val deserializer = new TDeserializer(new TBinaryProtocol.Factory());
try {
val obj = deserializer.deserialize(new ClientError{}, input._2.toArray)
其中ClientError是从Thrift文件使用Scrooge生成的特征。问题是,deserialize()需要TBase对象,但TBase是一个接口。我该怎么做呢?我是否必须创建一个实现两者的新类? 感谢任何帮助!
答案 0 :(得分: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)
}
答案 1 :(得分:0)
def getClientError(binaryData: Array[Byte]) : ClientError = {
val tdser = new TDeserializer();
val cliErr = new ClientError()
tdser.deserialize(cliErr, binaryData)
return cliErr
}