Создание объектов TBase из Thrift-сгенерированных классов в Scala

У меня есть несколько классов Scala, которые я сгенерировал с помощью Thrift (Scrooge). Теперь мне нужно как-то создать экземпляр класса TBase, так как класс TSerializer нуждается в этом в качестве входных данных.

Это мой подход:

  def createTestBinary(): String = {
    val proto = new TBinaryProtocol.Factory
    val err = new ClientError{}
    val binary = new TSerializer().serialize(err)
    ""
  }

ClientError - это сгенерированный класс. Как я могу создать его экземпляр или сделать его членом TBase?

Есть идеи, как это сделать? Заранее спасибо!

2 ответа

Решение

Вам не нужно TSerializer, это для "ванильного" бережливости, а не для сгенерированных Скруджем классов. Вам нужно сделать что-то вроде этого:

val transport = TMemoryBuffer(1024) // or whatever 
err.write(new TBinaryProtocol(transport))
val binary = transport.getArray

Для сгенерированных scrooge классов вы можете использовать JsonThriftSerializer:

import com.twitter.scrooge.JsonThriftSerializer
val serializer = JsonThriftSerializer(<scrooge-generated-classes>._codec)
Json.toJson(serializer.toString(<scrooge-generated-classes>))
Другие вопросы по тегам