在 scala 的 play 中指定嵌套对象 json

Specify a nested object in scala's play json

鉴于此代码:

    case class SocialUser(firstName: String, lastName: String)
    case class UserDetails(avatarUrl: String, phone: String)

    // I want to avoid having to specify each SocialUser field one by one but just use the implicit write as stated below
    implicit val socialUserWrites = Json.writes[SocialUser] 
    implicit val userDetailsWrites = Json.writes[UserDetails]

现在,我如何以这种格式输出 json?

{"user": {
      "firstName: "",
      "lastName": "",
      "details": {
        "avatarUrl": "",
        "phone": "",
      }
    }}

您错过了 "user" 在 "UserDetail" 中写道:

implicit val combinedUserWrites: Writes[CombinedUser] = (
  (__ \ "user").write[SocialUser] and
    (__ \ "user" \ "userDetails").write[UserDetails]
  )(unlift(CombinedUser.unapply))

x: CombinedUser = CombinedUser(SocialUser(f,l),UserDetails(a,p))

scala> res4: play.api.libs.json.JsValue = {"user":{"firstName":"f","lastName":"l","userDetails":{"avatarUrl":"a","phone":"p"}}}