Как объединить 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. Большое спасибо!