码迷,mamicode.com
首页 > 编程语言 > 详细

Spring MVC灵活控制返回json的值(自定义过滤字段)

时间:2017-11-07 13:20:01      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:map   iam   属性   mem   rac   垃圾   过滤   设置   term   

在使用spring MVC开发过程中,为了提高项目执行效率,所以在一些外键字段的实体中会注解”@ManyToOne(fetch = FetchType.LAZY)”以实现延迟加载的效果。

但是,在使用ajax请求数据,当需要返回的序列化数据中包含延迟加载的属性时,会出现错误,延迟加载的属性无法进行序列化。在这个时候,我们需要暂时取消延迟加载,以取到所有需要的数据。

可是,这样又会造成一堆垃圾数据的产生、序列化、传递至前台。

所以需要在控制层进行数据过滤,只序列化需要的数据。

具体过滤方法如下:

String jsonString = "";
ObjectMapper objectMapper = new ObjectMapper();
//过滤懒加载属性
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,false);
//过滤后时间属性格式
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
                               //设置需要保留的字段(id,memberId.name,orderId.serviceTime)
objectMapper.setFilters(JsonFilterUtil.getFilterOut("id","memberId","name","orderId","serviceTime"));
objectMapper.addMixIn(TourRecord.class,JsonFilterUtil.getObjectFilterMinIn());
//需要过滤的外键类型
objectMapper.addMixIn(Member.class,JsonFilterUtil.getObjectFilterMinIn());
objectMapper.addMixIn(Order.class,JsonFilterUtil.getObjectFilterMinIn());
try {
   //序列化数据
jsonString = objectMapper.writeValueAsString(tourRecords);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
map.put("tourList", jsonString);

要实现过滤json返回数据的方式有很多种,下面的网址有其他的实现方式,有需要的同学可以去看看

https://my.oschina.net/diamondfsd/blog/836727

Spring MVC灵活控制返回json的值(自定义过滤字段)

标签:map   iam   属性   mem   rac   垃圾   过滤   设置   term   

原文地址:http://www.cnblogs.com/meng-ma-blogs/p/7798315.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!