개발노트
2022. 7. 29. 08:08
먼저 필요한 dependency가 있다.
바로 json-simple이다.
(Maven의 경우 아래와 같다.)
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
다음과 같은 JSON 응답이 들어왔다.
그 중에서 난 'items'만 필요하다.
response > body > items로 하나씩 파싱을 해보았다.
여기서 아까 주입한 json-simple의 JSONParser가 쓰이게 된다.
위 사진과 같은 JSON 응답은 String 객체 result로 만들었다.
이것으로 result를 한 번 파싱해서 JSONObject형태로 만들어 준다.
JSONParser parser = new JSONParser();
JSONObject parsedResult = (JSONObject) parser.parse(result);
이제 response > body > items로 한 단계씩 깊이 파싱해보겠다.
메서드 get(key)의 형태로 하나씩 파싱하면 된다.
코드는 아래와 같다.
JSONObject response = (JSONObject) parsedResult.get("response"); //response
JSONObject body = (JSONObject) response.get("body"); //body
JSONArray items = (JSONArray) body.get("items"); //items
내가 추출한 객체 items는 지금 JSONArray형태이다.
이를 보편적인 형태인 List<Items>로 변환하고자 한다.
복수객체인 List이니 TypeReference를 써보았다. (이는 stackoverflow의 도움을 받았다)
ObjectMapper mapper = new ObjectMapper();
List<Item> itemList = mapper.readValue(items.toString(), new TypeReference<>(){});
(※ 실제 코드에서는 DTO 형태도 고려해야 될 듯 싶다.)
이렇게 해서 내가 뽑은 itemList를 하나씩 시험출력 해보았다.
(※ 실제 코드에서는 Slf4j를 권장한다.)
문제없이 잘 나왔다.
내 방법을 요약하자면 다음과 같다.
1. com.googlecode의 json-simple을 준비한다.
2. JSON 응답을 String 객체로 만들어서 JSONParser에 넣어 파싱한다.
3. 알맞는 형태(JSONXxx)의 객체로 단계별로 파싱한다.
4. items는 복수형태의 객체이다. readValue를 쓸 때, TypeReference형태로 넣어줘서 썼다.
'개발노트' 카테고리의 다른 글
[종합] 웹 서비스 개발하면서 도움되는 포스트 모음 (0) | 2023.02.16 |
---|