json string 중복 value 체크 후 중복 json 제거
2023. 9. 4. 10:03ㆍ개발하는중/java
728x90
반응형
json data에 중복 value가 존재 할시 체크하여 json 데이터 제거 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
// Gson libray
@Test
public void jsonArrayTest() throws IOException {
log.info("jsonArrayTest");
String jsondata = "[{\"testId\":\"P111111\",\"name\":\"kim\"}, {\"testId\":\"P111111\",\"name\":\"lee\"}, {\"testId\":\"P233321\",\"name\":\"lee\"}]";
JsonParser jsonParser = new JsonParser();
JsonArray recvList = (JsonArray) jsonParser.parse(jsondata);
ObjectMapper mapper = new ObjectMapper();
List<Map<Object, Object>> list = Arrays.asList(mapper.readValue(jsondata, Map[].class));
log.info("1 ::: " + recvList);
log.info("2 ::: " + list);
list = distinctArray(list, "testId");
log.info("3 ::: " + list);
String distinctData = list.toString();
log.info("4 ::: " + distinctData);
recvList = (JsonArray) jsonParser.parse(distinctData);
log.info("5 ::: " + recvList);
}
// 중복제거 메소드, key 제거할 맵 key
private List<Map<Object, Object>> distinctArray(List<Map<Object, Object>> target, Object key) {
if(target != null){
target = target.stream().filter(distinctToKey(o -> o.get(key))).collect(Collectors.toList());
}
return target;
}
// 중복제거 함수
private <T> Predicate<T> distinctToKey(Function<? super T, Object> keyExtractor){
Map<Object, Boolean> seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
|
cs |
728x90
'개발하는중 > java' 카테고리의 다른 글
특수문자 정규식 체크 (0) | 2023.09.04 |
---|---|
JAVA 특수문자 사이 문자열 잘라 넣기 (0) | 2023.09.04 |
JAVA 입력,출력,연산,swing 사용자UI, 랜덤 기본예제 (0) | 2021.08.27 |
JAVA 입력,출력,변수,연산,랜덤함수, swing입력UI,조건문 기본적인 예제 (0) | 2021.08.27 |
JAVA 입력,출력,변수 기본적인 예제 (0) | 2021.08.26 |