[英]Jackson ignores JsonProperty annotation in deserialization
我有一個難題。 我正在嘗試使用構建器模式將json消息反序列化為pojo,並且出現以下錯誤:
Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "Information"
(class com.verification.client.models.response.Response$Builder), not marked as ignorable (3 known properties: "status", "products", "information"])
這讓我感到非常困惑,因為我已經使用JsonProperty注釋在pojo中清楚地標記了該字段:
@JsonDeserialize(builder = Response.Builder.class)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Response {
@JsonProperty("Status")
private final Optional<Status> status;
@JsonProperty("Products")
private final Optional<List<ResponseProduct>> products;
@JsonProperty("Information") //Here's where the field is defined
private final Optional<List<ResponseInformation>> information;
private Response(final Builder b){
this.status = b.status;
this.products = b.products;
this.information = b.information;
}
public Optional<Status> getStatus() {
return status;
}
public Optional<List<ResponseProduct>> getProducts() {
return products;
}
public Optional<List<ResponseInformation>> getInformation() {
return information;
}
@JsonPOJOBuilder(buildMethodName = "build", withPrefix = "")
public static class Builder{
private Optional<Status> status;
private Optional<List<ResponseProduct>> products = Optional.empty();
private Optional<List<ResponseInformation>> information = Optional.empty();
public Builder(){}
public Builder status(final Status status){
this.status = Optional.of(status);
return this;
}
public Builder products(final List<ResponseProduct> products){
this.products = Optional.of(products);
return this;
}
public Builder information(final List<ResponseInformation> information){
this.information = Optional.of(information);
return this;
}
public Response build(){
return new Response(this);
}
}
}
我覺得這有點小,但是在這一點上,我對為什么我的代碼采用這種方式感到困惑。
PS這是我正在反序列化的json
{
"Information": [{
"InformationType": "error-details",
"Code": "internal_application_error",
"Description": "Error: Internal",
"DetailDescription": []
}]
}
不久前解決了這個問題,為后代作了解答。
我遇到的問題是構建方法未正確解釋,但是通過在靜態構建類的方法上定義@JsonSetter批注,Jackson能夠正確解釋輸入並構建對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.