在writeJSON(Jackson)中包含对象的类类型

时间:2019-02-21 03:28:40

标签: java json jackson

我正尝试将POJO序列化为包含类类型JSON的{​​{1}}。

我正在尝试实现的@type示例:

JSON

我已经了解了此注释

{
   "@type":"com.train.model.AvailabilityResponsePojo",
   "code":"00",
   "message":"SUCCESS",
   "payload":[
      {
         "arrivaldate":"2019-03-01",
         "arrivaltime":"0800",
         "@type":"com.train.model.Train",
         "departdate":"2019-03-01",
         "fares":[
            {
               "amount":"110000",
               "@type":"com.train.model.Fares",
               "id":"123456",
               "pessengertype":null
            }
         ]
      }
   ]
}

但是我无法以某种方式使其显示在@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "@type") 中。我是否需要将该代码行添加到进行转换的类上?还是JSON类? 对此新手编码者的任何启发将不胜感激。'

编辑: 这是我目前的Pojo:

POJO

1 个答案:

答案 0 :(得分:0)

您需要在课程级别添加JsonTypeInfo注释:

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
    "code",
    "message",
    "payload"
})
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "@type")
class Train {

include默认情况下设置为JsonTypeInfo.As.PROPERTY,因此,您无需指定它。

另请参阅:

  1. Inheritance with Jackson
  2. More Jackson Annotations