将 @JsonDeserialize 与 @JsonCreator 一起使用时出错

dre*_*kka 5 json jackson deserialization

我有一个类,我正在尝试将一些 JSON 反序列化为该类。其中一个属性具有通过 @JsonDeserialize 注释附加的自定义转换器。当类使用 setter 和 setter 上的注释编写时,反序列化工作正常:

public class Rates extends AbstractResponse {

    private Date effectiveDate;
    private List<Rate> rates;

    public Rates(Date effectiveDate, List<Rate> rates) {
        this.effectiveDate = effectiveDate;
        this.rates = rates;
    }

    public Date getEffectiveDate() {
        return this.effectiveDate;
    }

    @JsonProperty("timestamp")
    public void setEffectiveDate(Date effectiveDate) {
        this.effectiveDate = effectiveDate;
    }

    @JsonDeserialize(converter = RatesTableConverter.class)
    public void setRates(List<Rate> rates) {
        this.rates = rates;
    }

    public List<Rate> getRates() {
        return this.rates;
    }
Run Code Online (Sandbox Code Playgroud)

}

但是当我把它改写成这样时:

public class Rates extends AbstractResponse {

    private final Date effectiveDate;
    private final List<Rate> rates;

    @JsonCreator
    public Rates(
            @JsonProperty("timestamp") Date effectiveDate,
            @JsonProperty("rates") 
            @JsonDeserialize(converter = RatesTableConverter.class) List<Rate> rates) {
        this.effectiveDate = effectiveDate;
        this.rates = rates;
    }

    public Date getEffectiveDate() {
        return this.effectiveDate;
    }

    public List<Rate> getRates() {
        return this.rates;
    }

}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token
Run Code Online (Sandbox Code Playgroud)

我弄乱了许多想法,但无法让它发挥作用。似乎在构造函数上使用时,没有正确检查反序列化器。

任何想法我错过了什么?