0

我正在尝试反序列化 Scala 中的二进制消息:

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

其中 ClientError 是 Scrooge 从 Thrift 文件生成的特征。问题是,deserialize() 需要一个 TBase 对象,但 TBase 是一个接口。我该怎么做呢?我是否必须创建一个实现两者的新类?感谢您的帮助!

4

2 回答 2

1

尝试这个:

def decode(bytes: Array[Byte]): ClientError = {
  val protocolFactory = new TBinaryProtocol.Factory
  val buffer = new TMemoryInputTransport(bytes)
  val proto = protocolFactory.getProtocol(buffer)
  ClientError.decode(proto)
}
于 2016-05-19T13:28:00.320 回答
-1
def getClientError(binaryData: Array[Byte]) : ClientError = {
         val tdser = new TDeserializer();  
         val cliErr = new ClientError()
         tdser.deserialize(cliErr, binaryData)
         return cliErr 
}
于 2019-03-26T20:12:35.433 回答