2012-11-17 65 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)extends 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函數。 –