Playframework 2.0 将平面json对象映射到分层对象

Playframework 2.0 将平面json对象映射到分层对象,playframework-2.0,Playframework 2.0,我正在使用Play 2.2.x 我想使用Format将平面json对象映射到层次对象结构。这里有一个例子 case class Hobby(id: String, name: String) case class PersonWithHobby(id: String, name: String, hobby: Hobby) 但我的json是一个平面结构 {"id":"123, "name":"Joe", hobbyId:"abc", "hobbyName":"programming"} 我想

我正在使用Play 2.2.x

我想使用Format将平面json对象映射到层次对象结构。这里有一个例子

case class Hobby(id: String, name: String)
case class PersonWithHobby(id: String, name: String, hobby: Hobby)
但我的json是一个平面结构

{"id":"123, "name":"Joe", hobbyId:"abc", "hobbyName":"programming"}
我想知道怎么做

val personFormat = (
    (__ \ "id").format[String] and
    (__ \ "name").format[String] and
    ((__ \ "id").json.pick[String] and 
     (__ \ "name").json.pick[String]).format[Hobby]
)

当然,上面的代码不起作用。它只是想展示我想要做什么。

这里有一个定义格式的好方法(结合了以下几个概念):

val personFormat: Format[PersonWithHobby] = (
(__ \ "id").format[String] and
(__ \ "name").format[String] and
  (
    (__ \ "hobbyId").format[String] and
    (__ \ "hobbyName").format[String]
  )(Hobby.apply, unlift(Hobby.unapply))
)(PersonWithHobby.apply, unlift(PersonWithHobby.unapply))