我有一个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的正确方法是什么?
答案 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))))
}