我将一些scala对象序列化为JSON,并需要将其原始类型添加到序列化中。
我有以下课程
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)
似乎有一个Jackson注释(我使用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("bob.denard@sqli.com",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":"bob.denard@sqli.com","taxonz":["business"]}
]
},...
]
有什么想法吗? :)
答案 0 :(得分:0)
这是因为类型信息是Jackson完全处理的元数据,因此您不必为了传递类型信息而定义属性。
如果您希望能够看到属性值,Jackson 2.0将具有这样的功能(添加@JsonTypeInfo.visible
属性),但2.0尚未发布(2.0.0-RC1已经发布,并且包含此功能)。