2017-12-20 36 views
0

私は少し難解です。私は、Builderパターンを使用してPOJOにJSONメッセージをデシリアライズしようとしていると私は、次のエラーを取得しています:ジャクソンは、逆シリアル化でJsonPropertyアノテーションを無視します。

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"]) 

これは私がはっきりとPOJOのフィールドをマークしてきたように私には非常に混乱していますJsonProperty注釈:

@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); 
     } 
    } 
} 

私はそれを感じているが、小さな何かが、この時点で私は私のコードがこのように動作している理由のために途方に暮れています。

P.S. は、ここで私は

{ 
"Information": [{ 
    "InformationType": "error-details", 
    "Code": "internal_application_error", 
    "Description": "Error: Internal", 
    "DetailDescription": [] 
}] 
} 

答えて

0

をデシリアライズしていますJSONは、後世のために答える、しばらく前にこれを解決です。

ビルドメソッドが正しく解釈されていないという問題は、静的ビルドクラスのメソッドで@JsonSetterアノテーションを定義することで、Jacksonが入力を正しく解釈してオブジェクトを構築できるようになったことです。

関連する問題