model 代码:public class A{
private long id;
private String name;
private String avatar;
private int score;
private B b;
//......setter and getter
}controller代码:@RequestMapping("/A")@ResponseBodypublic A getModel(){
A a = new A();
a.setName("one");
a.setAvatar("avatar.jpg");
return a;
}那么在前端请求/A时就会得到:{id:0,name:"one",avatar:"avatar.jpg",score:0,b:null}这不是我希望的结果,我希望前端只能拿到它所需要的name 和 avatar。不完美的解决方案用mybatis时,每次查询结果数据,用Map来承载,而不是bean,在Controller中也是如此(甚至可以剔除model层)。但这样就要求对数据库表非常了解,而牺牲了很多便利操作(如 增、改操作)
2 回答
沧海一幻觉
TA贡献1824条经验 获得超5个赞
可以使用jackson的Include.NON_DEFAULT 属性为默认值不序列化
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_NULL);
//通过该方法对mapper对象进行设置,所有序列化的对象都将按改规则进行系列化
//Include.Include.ALWAYS 默认
//Include.NON_DEFAULT 属性为默认值不序列化
//Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化
//Include.NON_NULL 属性为NULL 不序列化
添加回答
举报
0/150
提交
取消