【问题标题】:Base64 encoding for akka ByteStringakka ByteString 的 Base64 编码
【发布时间】:2017-05-19 11:43:56
【问题描述】:
我一直在寻找将 Scala 的 Array[Byte] 更改为其他不可变集合类的方法。我想将那些所说的字节数组重构为更优雅的 Akka 字节字符串,但是我遇到了编码问题。据我所知(我是 scala 新手)使用 Jackson 序列化编码 ByteStrings 和 Array[Bytes] 使用 Base64 使用相同值返回两种数据类型的不同结果。所以我的问题是,有没有一种简洁的方法可以将数组重构为不可变集合,同时保持与旧数组相同的 Base64 序列化值?
【问题讨论】:
标签:
scala
jackson
base64
akka
【解决方案1】:
我会使用 circe 或 argonaut 而不是 Jackson 来进行 json 序列化。它们很容易让您为不同类型提供自定义编码器。
implicit val byteArrayEncoder =
Encoder.encodeString.contramap[Array[Byte]](new String(_))
implicit val byteStringEncoder =
Encoder.encodeString.contramap[ByteString](_.UTF_8)
然后你可以像..一样使用它
import io.circe._, io.circe.generic.auto._, io.circe.parser._, io.circe.syntax._
case class Whatever(bytes: Array[Byte], bstring: ByteString)
Whatever(???).asJson.nospaces
更多请看
https://circe.github.io/circe/