Spring MVC @JsonView实现在消息转换器中过滤数据
2016-01-19 13:48
555 查看
0x01问题描述
最近做的项目,很多地方是为手机端编写的接口。领导要求只返回必要的数据,所以就要进行过滤。要求要灵活配置,编写简单。0x02 思路
-第一种思路就是,在service中返回数据后,用代码将不必要的数据设置为NULL。 sucks~!不考虑。-然后找到了json-lib包中的组件进行过滤,这种方式也需要写不少代码。而且没有跟spring mvc的消息转换器结合,所以这种实现方式虽然可以达到效果,但是不够优雅。
-最后很自然的就想到了Spring MVC当中@ResponseBody注解所引用的消息转换器jackson。于是在spring官网上就找到了这一篇。Latest Jackson integration improvements in Spring
0x03用法
用法很简单如下:public class View { interface Summary {} } public class User { @JsonView(View.Summary.class) private Long id; @JsonView(View.Summary.class) private String firstname; @JsonView(View.Summary.class) private String lastname; private String email; private String address; private String postalCode; private String city; private String country; } public class Message { @JsonView(View.Summary.class) private Long id; @JsonView(View.Summary.class) private LocalDate created; @JsonView(View.Summary.class) private String title; @JsonView(View.Summary.class) private User author; private List<User> recipients; private String body; }
创建一个View类,里面含有一个接口。(注解里用,注意如果需要在其他包中使用interface得是public的)
在实体当中就可以使用@JsonView注解来标注这个字段在哪种类型的View当中被转换了。
在Controller当中,就能用刚才的注解来标注,你想要哪种类型的过滤后的结果了。
@RestController public class MessageController { @Autowired private MessageService messageService; @JsonView(View.Summary.class) @RequestMapping("/") public List<Message> getAllMessages() { return messageService.getAll(); } @RequestMapping("/{id}") public Message getMessage(@PathVariable Long id) { return messageService.get(id); } }
具体内容参见代码和链接吧,刚开始写博客。感觉自己都不知道怎么说话了。
注意,spring 4.x以后才支持这个功能。并且在dispacherServlet的配置当中一定要加上 这个东西。
相关文章推荐
- Java下利用Jackson进行JSON解析和序列化示例
- 使用Jackson来实现Java对象与JSON的相互转换的教程
- 举例讲解Java的Jackson库中ObjectMapper类的使用
- 解析Java的Jackson库中对象的序列化与数据泛型绑定
- Java的Jackson库的使用及其树模型的入门学习教程
- Jackson的用法实例分析
- 实例解析Java的Jackson库中的数据绑定
- 解析Java的Jackson库中Streaming API的使用
- Jackson 转json 时日期格式化,排除字段,包含字段
- 通用json解析,根据json层级关系直接使用: 基节点.子节点.孙节点.x.x
- Jackson解析json数据时,Bean对象的内部类必须定义为static
- 使用jacksonjava对象转换成标准的json格式,便于与easyui...
- Jackson介绍篇之filter
- Spring整合Dwr,Cannot locate BeanDefinitionParser for element [annotation-scan]
- spring3 MVC手工搭建Spring3项目demo
- json key没有引号
- spring mvc 开发需要的jar包的用途详解
- 基于注解的 Spring MVC 简单入门-网摘
- [MVC] 深入浅出Spring MVC
- Spring4 MVC json问题(406 Not Acceptable)