将Array [Array [Byte]]序列化为Json

时间:2014-09-28 18:48:14

标签: scala playframework

我有一个Array [Array [Byte]],我想在Playframework中将它序列化为Json:

implicit val matrixWrites = new Writes[matrix] {
    def writes(c: Matrix): JsValue = {
  Json.obj(
        "id" -> c.id,
        "matr" -> c.matr
      )
    }
  }

但是我收到错误Type mismatch: found (String, Array[Array[Byte]] required (String, Json.JsValueWrapper)

将Array [Array [Byte]]转换为Json的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

创建一个Writes[Array[Array[Byte]]],将字节数组的数组序列化为某种字符串格式(可能是base64)。

您可能还想为同一类型创建Reads以转换回Array[Array[Byte]]

答案 1 :(得分:0)

在相关的说明中,我喜欢包装我的二进制数据,因此不必显式导入隐式格式。

import org.apache.commons.codec.binary.Base64
import play.api.libs.json.{Format, Reads, Writes}

case class BinaryData(bytes: Array[Byte])

object BinaryData {
    implicit val MessageFormat: Format[BinaryData] = Format(Reads.of[String].map(s => apply(Base64.decodeBase64(s))), Writes(a => Writes.of[String].writes(Base64.encodeBase64String(a.bytes))))
}