[英]Filter object from list based on property value spring boot
我有一个休息服务,将返回对象List
public class MyObject {
private String name;
private String state;
}
现在,我需要根据其余调用中提供的字段从列表中过滤对象:
http://localhost:8080/myuri?state=NY
现在,我需要开发自定义过滤器,我只找到属性过滤器而不是我想要的东西。 有没有办法实现这一目标。
你不需要用Jackson
来做这件事。 只需使用Stream API
过滤它。 如果数据是从DB
加载的,则使用SQL
的WHERE
子句对其进行过滤。
例:
@GetMapping(value = "/states", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public List<MyObject> loadStates(@RequestParam(name = "state", defaultValue = "NY", required = false) String[] states) {
return service.loadAndFilterByState(states);
}
如果您有缓存列表,可以按如下方式对其进行过滤:
@GetMapping(value = "/states", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public List<MyObject> loadStates(@RequestParam(name = "state", defaultValue = "NY", required = false) String[] states) {
Arrays.sort(states);
return getStates()
.stream()
.filter(s -> Arrays.binarySearch(states, s.getState()) > -1)
.collect(Collectors.toList());
}
也可以看看:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.