有一种情况是,一个对象,要通过ajax传到后台。但是前台的对象属性,比后台的类要多一些。这种情况下,服务器会报错,在前端组装出后台的类的对象,以及传一个Map到后台,然后再组装成类,都不是特别优雅。这种情况下,就可以使用jackson提供的注解,@JsonIgnoreProperties了。
在类上面添加@JsonIgnoreProperties(ignoreUnknown = true)即可忽略类中不存在的属性。
/JS代码
var camera = {
cid : "cid",
moreProperties : "more"
}
$.ajax({
url : basePath + "camera/deleteCamera",
type :"POST",
dataType : "json",
contentType : "application/json",
data : JSON.stringify(camera)
});
//controller代码
……
public String deleteCamera(@RequestBody Camera camera){
……
// moreProperties 属性不是Camera的属性,这样请求会报400,The request sent by the client was syntactically incorrect.
public class Camera{
private String cid;
//其他略
}
// 加上JsonIgnoreProperties注解之后,请求成功,服务器成功忽略了moreProperties 属性
@JsonIgnoreProperties(ignoreUnknown = true)
public class Camera{
private String cid;
//其他略
}
@JsonIgnoreProperties还可以配置value={"cid",……}来决定哪些属性忽略不管
更多更详细的应用,可搜索@JsonIgnore即可。