2016-04-30 32 views
0

我在我的應用程序中使用spring-framework 4.2.5Jackson 2.6.3。我使用@jsonView來獲得正確的serializer實體。但它不適用於deserializer。比如我有一個實體如下:傑克遜反序列化忽略屬性無法正常工作@JsonView

public class A { 

    @JsonView(View.Summary.class) 
    private int a; 

    @JsonView(View.Detail.class) 
    private int b 

    /* 
    * Getters And Setters 
    */ 
} 

現在我有一個控制器如下:

@RestController 
@RequestMapping("/a") 
public class AController { 

    @RequestMapping("/add") 
    @JsonView(View.Summary.class) 
    public void add(@RequestBoddy A a) 
    { 
     // do Something 
    } 

} 

當我送一個JSON作爲遵循這個方法:

{ 
    "a": 1, 
    "b": 2 
} 

因爲我用這個方法使用View.Summary.class JsonView,它必須忽略b,但它沒有。

我用一個配置在對象映射如下: objectMapper.enable(DeserializerFeature.FAIL_ON_IGNORED_PROPERTIES)

問題出在哪裏

+1

很確定註釋是JsonView而不是JsonViwe – Joeblade

回答

1

的參數使用@JsonView(View.Summary.class)

@RequestMapping("/add") 
public void add(@RequestBoddy @JsonView(View.Summary.class) A a) { 
    // do Something 
} 

而且還使用可空類型的DTO S:

public class A { 
    @JsonView(View.Summary.class) 
    private Integer a; 

    @JsonView(View.Detail.class) 
    private Integer b 

    /* 
    * Getters And Setters 
    */ 
} 

否則,你將無法告訴默認值缺失值分開。

+1

你確定它是JsonViwe而不是JsonView? – Joeblade

+0

這是錯字,謝謝指出。 –