2012-02-28 44 views
2

我將一些scala對象序列化爲JSON,並且需要將它們的原始類型添​​加到序列化中。scala,Jackson和@JsonTypeInfo

我有以下類

class Contact(taxonz : Seq[String]) { val taxons = taxonz} 
case class Phone(number:String,taxonz : Seq[String]) extends Contact(taxonz = taxonz) 
case class Mail(value:String,taxonz : Seq[String]) extends Contact(taxonz = taxonz) 

它似乎還有傑克遜註釋(我使用jerkson):JsonTypeInfo

不過,我試着在加入

@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="scalaclass") 

上面三班,我沒有回到我的'scalaclass'屬性。

val persons = Seq(
     Person("000","bob denard", 
      Option(Seq(
      Phone("0132354548",Seq("home")), 
      Mail("[email protected]",Seq("business")) 
     )) 
    ), 
     Person("001","aziz bouakaz ben aissef",Option(Seq(Phone("03332354548",Seq("business"))))) 
    ) 
    import com.codahale.jerkson.Json 
    val jsonResult = Json.generate(persons) 

與jsonResult值:

[ 
    {"id":"000","fullname":"bob denard","contacts": 
      [ 
       {"number":"0132354548","taxonz":["home"]}, 
       {"value":"[email protected]","taxonz":["business"]} 
      ] 
    },... 
] 

任何想法? :)

回答

0

這是因爲類型信息是Jackson完全處理的元數據,因此您不必爲傳遞類型信息的唯一目的定義屬性。

如果您希望能夠看到屬性值,Jackson 2.0將具有這樣的功能(添加@JsonTypeInfo.visible屬性),但2.0尚未發佈(2.0.0-RC1不存在,並且包含此功能)。

相關問題