我在我的应用程序中使用spring-framework 4.2.5和Jackson 2.6.3。我将@jsonView
用于正确的serializer
实体。但它对deserializer
无效。例如,我有一个实体如下:
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
,但它不会。
我在Object mapper中使用配置如下:
objectMapper.enable(DeserializerFeature.FAIL_ON_IGNORED_PROPERTIES)
问题在哪里?
答案 0 :(得分:1)
在参数上使用@JsonView(View.Summary.class)
:
@RequestMapping("/add")
public void add(@RequestBoddy @JsonView(View.Summary.class) A a) {
// do Something
}
此外,为 DTO 使用 Nullable 类型:
public class A {
@JsonView(View.Summary.class)
private Integer a;
@JsonView(View.Detail.class)
private Integer b
/*
* Getters And Setters
*/
}
否则,您将无法分辨默认值和缺失值。