我有以下对象:
case class Foo(value: UUID)
case class Bar(foo: Foo)
我想在JSON中将它们序列化为这样:
{foo: "e88ad5ea-13cf-4666-addb-c231c12cd3a3"}
意思是我想省略自动格式化程序添加的“value”参数,如果我只是写这个:
implicit val fooFormat = Json.format[Foo]
implicit val barFormat = Json.format[Bar]
我尝试编写自定义编写器/读者,但我真的不知道如何跳过JPath。
答案 0 :(得分:0)
怎么样:
implicit val format: Format[Bar] = new Format[Bar] {
override def writes(o: Bar): JsValue = Json.obj("foo" -> o.foo.value)
override def reads(json: JsValue): JsResult[Bar] =
(json \ "foo").validate[String].map(s => Bar(Foo(UUID.fromString(s))))
}