2012-11-17 2 views
0

는 :두 개의 JsValues를 병합하는 방법은 무엇입니까? 나는 다음과 같은 한

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 
} 

Sub.toJson이 Super.toJson를 다시 사용할 수 있도록 정의하고 생성 될 방법 :

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

두 개의'JsObject'를'++ '연산자와 병합 할 수 있습니다. 어쩌면 당신이 이것을 사용할 수 있습니다. – Sonson123

+0

귀하의 유형이 의미가 없습니다. 'Class Sub (m0 : Member, m1 : Member)는 Super (m0)를 확장합니까? ' –

+0

나는 당신이 묻고 자하는 것을 이해하는 것에는 가까울 지 모르지만 충분히 가깝지는 않습니다. 질문을 정리하십시오. – maackle

답변

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 
    } 
    } 
} 
+0

이것은 수퍼 클래스의 toJson 함수를 재사용하지 않습니다. –

관련 문제