Tôi đã hai JsValue tạo ra từ lớp trường hợp, ví dụ: Sách và Sổ chi tiếtLàm thế nào để hợp nhất một JsValue để JsObject mực phẳng
val bookJson = Json.tojson(Book)
val bookDetailJson = Json.tojson(BookDetail)
và định dạng sẽ là:
//Book
{
id: 1,
name: "A Brief History of Time"
}
//BookDetail
{
bookId: 1,
author: "Steven Hawking",
publicationDate: 1988,
pages: 256
}
Làm thế nào tôi có thể hợp nhất chúng với một Json duy nhất trong khung công tác 2.10? ví dụ:
//Book with detail
{
id: 1,
name: "A Brief History of Time",
bookId: 1,
author: "Steven Hawking",
publicationDate: 1988,
pages: 256
}
Tôi đã cố gắng chuyển đổi và thất bại trong việc lặp qua JsValue thứ hai:
val mapDetail = (__).json.update(
__.read[JsObject].map { o =>
o.deepMerge(JsObject(Seq(("detail", bookDetailJson))))
})
bookJson.validate(mapDetail).get
Nó sẽ trở thành một bậc xuống, mà tôi không thực sự muốn.
//Book with detail
{
id: 1,
name: "A Brief History of Time",
detail: {
bookId: 1,
author: "Steven Hawking",
publicationDate: 1988,
pages: 256
}
}
Vui lòng cho tôi biết nếu bất kỳ mẹo nào có thể cung cấp cho phép biến đổi Json này. Cảm ơn nhiều!
Có vẻ như lớp 'JsObject' hỗ trợ phương thức' ++ 'để kết hợp hai' JsObject '. Bạn đã thử đưa chúng vào 'JsObject' (nếu chúng không phải kiểu đó) và sau đó sử dụng' ++'? – cmbaxter
Đó là nỗ lực của tôi mà đã cho tôi kết quả tương tự. Thật vậy, tôi nghĩ deepMerge sẽ cho tôi một câu trả lời tốt hơn. – Joyfulvillage
Vấn đề thực sự là khi tôi chuyển đổi một JsValue để JsObject, tôi chỉ có thể sử dụng JsObject (Seq (("chi tiết", detailsJson))) đó sẽ tạo ra điều này: chi tiết: { bookId: 1, tác giả: " Steven Hawking ", publicationDate: 1988, pages: 256 } – Joyfulvillage