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
更多请看
我一直在寻找一种方法将 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
更多请看