0

私は次のものを持っています:

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
}

Super.toJson を再利用して生成できるように、Sub.toJson をどのように定義しますか。

// assuming m0.toJson is "member0" and m1.toJson is "member1"
{
  "m0": "member0",
  "m1": "member1"
}
4

1 に答える 1

1

これは、メンバーのキーがわからないため、super.toJson が JsObject を返すことを前提としています。

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
    }
  }
}
于 2012-11-17T19:32:15.880 に答える