Jackson根据输入反序列化不同的映射

时间:2018-08-09 22:47:44

标签: java json jackson

我有一个正在使用的API,该API为特定属性返回两个不同的值。

"Appt": 
    {
       "Start": "2018-07-16T09:00:00-04:00",
       "End": "2018-07-16T23:00:00-04:00",
       "Extn": {
          "NumID": ""
        }
    }

Extn字段是问题所在。它通常返回上面的对象,并且映射正确,但是有时它将为Ext而不是对象返回一个布尔值。它实际上是"Extn": true

我的Java POJO就是这样构造的。...

@Data
@JsonIgnoreProperties(ignoreUnknown=true)
@JsonRootName(value="Appt")
public class Appt {

    @JsonProperty("Extn")
    private Appt.Extn extn;

    @JsonProperty("End")
    private String end;

    @JsonProperty("Start")
    private String start;

    @Data
    @JsonIgnoreProperties(ignoreUnknown=true)
    @JsonRootName(value="Extn")
    public static class Extn {

        @JsonProperty("NumID")
        private String NumID;
    }

}

因此,如果 NumID 不存在,因为 Extn 的值只是一个布尔值,Jackson映射器将失败。我如何告诉解串器处理这两种可能的情况?该API无法解决他们的问题,因此我必须加以防范。

0 个答案:

没有答案