Scala akka ByteString的Base64编码

Scala akka ByteString的Base64编码,scala,jackson,base64,akka,Scala,Jackson,Base64,Akka,我一直在寻找一种方法,将Scala的数组[Byte]更改为其他一些不可变的集合类。我想将said ByteArray重构为更优雅的Akka ByteStrings,但是我遇到了编码问题。据我所知(我是scala新手),使用Jackson序列化对ByTestRing和Array[Bytes]进行编码,使用Base64使用相同的值为这两种数据类型返回不同的结果。所以我的问题是,有没有一种好的、干净的方法可以将数组重构为不可变的集合,同时保持与旧数组相同的Base64序列化值?对于json序列化,我会

我一直在寻找一种方法,将Scala的数组[Byte]更改为其他一些不可变的集合类。我想将said ByteArray重构为更优雅的Akka ByteStrings,但是我遇到了编码问题。据我所知(我是scala新手),使用Jackson序列化对ByTestRing和Array[Bytes]进行编码,使用Base64使用相同的值为这两种数据类型返回不同的结果。所以我的问题是,有没有一种好的、干净的方法可以将数组重构为不可变的集合,同时保持与旧数组相同的Base64序列化值?

对于json序列化,我会使用circe或argonaut而不是Jackson。它们很容易让您为不同类型提供自定义编码器

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
欲了解更多信息,请参阅