在将一个案例类序列化为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\""}]}