akka ByteString 的 Base64 编码

Base64 encoding for akka ByteString

我一直在寻找一种方法将 Scala 的 Array[Byte] 更改为其他一些不可变集合 class。我想将那些所说的 bytearrays 重构为更优雅的 Akka ByteStrings,但是我 运行 遇到了编码问题。据我所知(我是一个 scala 新手)使用 Jackson 序列化编码 ByteStrings 和 Array[Bytes] returns 使用 Base64 使用相同值的两种数据类型的不同结果。所以我的问题是,是否有一种简洁明了的方法可以将数组重构为不可变集合,同时保持与旧数组相同的 Base64 序列化值?

我会使用 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/