为了账号安全,请及时绑定邮箱和手机立即绑定

SSM框架下前后端分离@ResponseBody返回json如何忽略特定属性

SSM框架下前后端分离@ResponseBody返回json如何忽略特定属性

慕码人8056858 2018-10-14 16:12:51
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 不序列化


查看完整回答
反对 回复 2018-10-29
?
偶然的你

TA贡献1841条经验 获得超3个赞

反射解决,用字符串的形式设置所有获取的字段名。
通过反射获取到该类和所要获取的字段get方法,保存在一个map中

查看完整回答
反对 回复 2018-10-29
  • 2 回答
  • 0 关注
  • 2618 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信