user9735824:
私は戻りますRESTサービス持っているList
オブジェクトのを
public class MyObject {
private String name;
private String state;
}
今、私は残りのコールに表示されたフィールドに基づいてリストからフィルタオブジェクトする必要があります。
http://localhost:8080/myuri?state=NY
今、私は、カスタムフィルタを開発する必要があると私は見つけたのプロパティフィルタを私が望むようなものではありません。これを達成する方法はあります。
マイケルZiober:
あなたは使用する必要はありません。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());
}
参照してください: