Reputation: 19798
I have the following:
abstract class Super(val m0: Member) {
def toJson: JsValue = Json.toJson(Map(("m0", m0.toJson)))
}
class Sub(m0: Member, m1: Member) extends Super(m0) {
def toJson: JsValue = ??? // should use super.toJson
}
How would Sub.toJson be defined such that it can reuse Super.toJson and produces:
// assuming m0.toJson is "member0" and m1.toJson is "member1"
{
"m0": "member0",
"m1": "member1"
}
Upvotes: 0
Views: 2657
Reputation: 2222
This assumes that super.toJson returns a JsObject because we don't know the key for the member otherwise.
class Sub(m0: Member, m1: Member) extends Super(m0){
def toJson: JsValue = {
(super.toJson, Json.toJson(Map(("m1", m1.toJson)))) match {
case (mm0: JsObject, mm1: JsObject) => mm0 ++ mm1
case _ => JsNull
}
}
}
Upvotes: 1