在 Scala 中从 Thrift 生成的 类 创建 TBase 对象
Create TBase objects from Thrift-generated classes in Scala
我有一些用 Thrift (Scrooge) 生成的 Scala classes。现在我需要以某种方式将它们实例化为 TBase class、b/c TSerializer class 需要它作为输入
这是我的方法:
def createTestBinary(): String = {
val proto = new TBinaryProtocol.Factory
val err = new ClientError{}
val binary = new TSerializer().serialize(err)
""
}
ClientError 是生成的 class。如何实例化它或将其包装为 TBase 成员?
有什么办法吗?提前致谢!
您不需要 TSerializer
,那是为了 "vanilla" 节俭,而不是为了吝啬鬼产生的 类。
你需要做这样的事情:
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>))
我有一些用 Thrift (Scrooge) 生成的 Scala classes。现在我需要以某种方式将它们实例化为 TBase class、b/c TSerializer class 需要它作为输入
这是我的方法:
def createTestBinary(): String = {
val proto = new TBinaryProtocol.Factory
val err = new ClientError{}
val binary = new TSerializer().serialize(err)
""
}
ClientError 是生成的 class。如何实例化它或将其包装为 TBase 成员?
有什么办法吗?提前致谢!
您不需要 TSerializer
,那是为了 "vanilla" 节俭,而不是为了吝啬鬼产生的 类。
你需要做这样的事情:
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>))