2016-05-19 2 views
0

Я пытаюсь desrialize бинарное сообщение в Scala:Deserialize двоичная Бережливость сообщение Scala

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