Как объединить JsValue с JsObject на плоском уровне

У меня есть два JsValue, созданных из класса case, то есть Book и Book detail

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

и формат будет:

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

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

Как я могу объединить их с одним Json в play-framework 2.10? то есть

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

Я пытался преобразование и не смог перебрать второй JsValue:

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

bookJson.validate(mapDetail).get

Это стало бы на один уровень ниже, чего я на самом деле не хочу.

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

Пожалуйста, дайте мне знать, если какой-то трюк может обеспечить это преобразование Json. Большое спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос