Скала, Джексон и @JsonTypeInfo - PullRequest
       13

Скала, Джексон и @JsonTypeInfo

2 голосов
/ 29 февраля 2012

Я сериализую некоторые объекты 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)

Кажется, есть аннотация Джексона(Я использую 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"]}
            ]
    },...
]

Есть идеи?:)

1 Ответ

0 голосов
/ 29 февраля 2012

Это связано с тем, что информация о типе - это метаданные, которые Джексон обрабатывает полностью, поэтому вам не нужно определять свойства с единственной целью передачи информации о типе.

Если вы хотите видеть значение свойстваВ Jackson 2.0 будет такая функция (добавлено свойство @JsonTypeInfo.visible), но 2.0 еще не выпущен (2.0.0-RC1 отсутствует и содержит эту функцию).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...