序列化JSON在转义的引号中包装字符串

时间:2015-03-09 09:43:53

标签: json playframework

在将一个案例类序列化为Json时,我得到了以下我迄今未遇到的奇怪行为:

Record(12345,List(Values("foo_baz"), Values("foo_bar")))
=> {"_id":"12345","values":[{"value":"\"foo_baz\""},{"value":"\"foo_bar\""}]}

以下是案例类:

final case class Record(userId: UserId, values: List[Values])

object Record {
  implicit val format = Json.format[Record]
}

嵌套的Values案例类:

case class Values(value: String)

object Values {
  implicit val format = Json.format[Values]
}

修改

在工作表中播放:

Json.toJson(Record(UserId("1234"),List(Values("foo_bar"), Values("foo_bar"))))
res0: play.api.libs.json.JsValue = {"_id":"1234","values":[{"value":"foo_bar"},{"value":"foo_bar"}]}

在我的申请点:

  def insert(in: Record) =
  {
    println(in)
    println(toJson(in))
    collection.insertIfNoneMatch(
      Json.obj("_id" -> in.userId), toJson(in))
      .map(_.map(_.as[Record]))
  } 

println的结果:

Record(1234,List(Values("foo_bar"), Values("foo_bar")))
{"_id":"jQC1v7m2RnyRoS7Y5goTSQ","values":[{"value":"\"foo_bar\""},  {"value":"\"foo_bar\""}]}

0 个答案:

没有答案