如何在akka http中序列化/反序列化protobuf?

时间:2016-09-11 19:49:51

标签: scala protocol-buffers akka-http

我正在使用Akka Http 2.4.7。对于Json(使用json4s),序列化是这样的:

entity(as[CaseClass]) { serialisedCaseClass => .... }

对于反序列化,我只返回一个case类对象。

我想知道protobuf有类似的方法吗?

1 个答案:

答案 0 :(得分:3)

不,没有任何可用的开箱即用(但我同意它会很高兴)。您目前需要构建自己的自定义unmarshaller来执行此操作(从akka-http 2.4.11开始)。

您可以根据现有的protobuf定义构建自己的unmarshaller。这是一个存根如何做到这一点:

case class Person(...)

implicit val personUnmarshaller: FromEntityUnmarshaller[Person] =
  PredefinedFromEntityUnmarshallers.byteArrayUnmarshaller map { bytes =>
    // bytes is an Array[Byte]
    // call protobuf to do the unmarshalling
  }

然后在您的路线中导入此定义。