Shi*_*esh 3 java rest spring json spring-mvc
我正在使用Spring和Java并实现基于REST的服务.我有一组为移动,iPad和Web开发的开发人员.考虑一下我有一个豆子
Class User{
private String Name;
private Integer id;
private String photoURL;
private ArrayList<String> ProjectName;
private ArrayList<String> TechnologyList;
private ArrayList<String> InterestList;
//Getters and setters
}
Run Code Online (Sandbox Code Playgroud)
虽然Web开发人员需要整个领域,而移动开发人员只需要两个字段,而iPad需要移动和网络之间的东西.
由于我使用jackson作为解析器,有没有办法在请求控制器时我可以指定我需要的所有数据并避免其他数据.例如,考虑我做一个GET请求
GET>http://somedomain.com/users?filter=name,id,photoUrl
Run Code Online (Sandbox Code Playgroud)
这给我带来了类似的JSON结构
{
"name":"My Name",
"id":32434,
"photoUrl":"/sss/photo.jpg"
}
Run Code Online (Sandbox Code Playgroud)
Sameway如果有人要求更多字段,可以过滤它们.请让我知道如何做到这一点,以便我的API保持通用和可用于所有人.
你可以达到你想要的效果,但还需要一些额外的工作.我可以为您提供两种解决方案.
Map
只需将要求的每个房产都放入地图中即可.
Jackson允许您设置过滤器,指定序列化或忽略哪些属性.
FilterProvider filter = new SimpleFilterProvider().addFilter("myFilter",
SimpleBeanPropertyFilter.filterOutAllExcept(requestedProperties));
String json = objectMapper.writer(filter).writeValueAsString(value);
Run Code Online (Sandbox Code Playgroud)
然后,您可以直接返回JSON字符串而不是对象.
对于这两种解决方案,您最好写一个完成工作的类.但是,如果你这样做,你也可以编写自己的消息转换器.MappingJackson2HttpMessageConverter
例如,您可以扩展并覆盖writeInternal
方法以满足您的需要.这具有很大的优势,您无需更改控制器.
归档时间: |
|
查看次数: |
2361 次 |
最近记录: |