【问题标题】: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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-15
      相关资源
      最近更新 更多