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)
我弄乱了许多想法,但无法让它发挥作用。似乎在构造函数上使用时,没有正确检查反序列化器。
任何想法我错过了什么?