如何过滤从 Spring Rest Web 服务返回的 json 响应。
当使用调用自定义事件时,我只需要输出事件 ID 和事件名称。当询问特定事件时我需要
发送活动的完整详细信息。
Class CustomEvent{
long id;
String eventName;
Account createdBy;
Account modifiedBy;
..
}
Class Account{
long id;
String fname;
String lname;
....
}
@Controller
public class CustomEventService
{
@RequestMapping("/customEvents")
public @ResponseBody List<CustomEvent> getCustomEventSummaries() {}
@RequestMapping("/customEvents/{eventId}")
public @ResponseBody CustomEvent getCustomEvent(@PathVariable("eventId") Long eventId) {}
}
我怎样才能实现上述目标?我现在使用的是 spring 3.1。 3.1版本是否支持实现以上或更高版本
您可以使用@JsonFilter进行归档。
Pojo:
@JsonFilter("myFilter")
public class User {
....
}
控制器:
public String getUser(
@RequestParam(value="id") String id,
@RequestParam(value="requiredFields",required=false ) String requiredFields
) throws JsonParseException, JsonMappingException, IOException {
//Get User
User user = userService.getUser(id);
//Start
ObjectMapper mapper = new ObjectMapper();
// and then serialize using that filter provider:
String json="";
try {
if (requiredFields!= null) {
String[] fields = requiredFields.split("\\,");
FilterProvider filters = new SimpleFilterProvider().addFilter("myFilter",
SimpleBeanPropertyFilter.filterOutAllExcept(new HashSet<String>(Arrays
.asList(fields))));
json = mapper.filteredWriter(filters).writeValueAsString(user);//Deprecated
} else {
SimpleFilterProvider fp = new SimpleFilterProvider().setFailOnUnknownId(false);
mapper.setFilters(fp);
json =mapper.writeValueAsString(user);
}
} catch (JsonGenerationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return json;
}
获取 URL: .....&requiredFields=id,姓名,年龄
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)