So führen Sie einen JsValue auf einer flachen Ebene zu JsObject zusammen

Ich habe zwei JsValue aus der Fallklasse erstellt, d. H. Buch und Buchdetail

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

und das Format wäre:

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

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

Wie kann ich sie in Play-Framework 2.10 zu einem einzelnen Json zusammenführen? d.h.

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

Ich habe die Transformation versucht und konnte den zweiten JsValue nicht durchlaufen:

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

bookJson.validate(mapDetail).get

Es würde eine Ebene tiefer werden, was ich nicht wirklich will.

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

Bitte lassen Sie mich wissen, ob ein Trick für diese Json-Transformation hilfreich ist. Danke vielmals!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage