Cómo fusionar un JsValue a JsObject en un nivel plano

Tengo dos JsValue creados a partir de la clase de caso, es decir, libro y detalle del libro

val bookJson = Json.tojson(Book)
val bookDetailJson = Json.tojson(BookDetail)

y el formato sería:

//Book
{
  id: 1,
  name: "A Brief History of Time"
}

//BookDetail
{
  bookId: 1,
  author: "Steven Hawking",
  publicationDate: 1988,
  pages: 256
}

¿Cómo puedo unirlos a un solo Json en Play-Framework 2.10? es decir

//Book with detail
{
  id: 1,
  name: "A Brief History of Time",
  bookId: 1,
  author: "Steven Hawking",
  publicationDate: 1988,
  pages: 256
}

Estaba intentando la transformación y no pude iterar a través del segundo JsValue:

val mapDetail = (__).json.update(
                  __.read[JsObject].map { o =>
                  o.deepMerge( JsObject(Seq(("detail", bookDetailJson))) )
                })

bookJson.validate(mapDetail).get

Se convertiría en un nivel por debajo, lo que realmente no quiero.

//Book with detail
{
  id: 1,
  name: "A Brief History of Time",
  detail: {
            bookId: 1,
            author: "Steven Hawking",
            publicationDate: 1988,
            pages: 256
          }
}

Por favor, avíseme si algún truco podría proporcionar en esta transformación Json. ¡Muchas gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta