반응형
JSON obejct는 아래 의존성을 사용하였음
org.json은 사용해봤는데 이건 또 첨 사용해봄..
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1</version>
</dependency>
URL 요청 시 응답 결과는 아래와 같음
<200,{"result":0,"data":[
{"category":"animal","type":"tiger","name":{"girl":"tigirl","boy":"tiboy"},count":"2},
{"category":"animal","type":"pig","name":{"girl":"pigirl","boy":"pigboy"},"count":2}
]
URL 요청 및 응답 파싱하기.
//요청할 URL의 헤더 생성
HttpHeaders headers = new HttpHeaders();
headers.add("Accept", "application/json");
headers.add("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE + ";charset=UTF-8");
//요청할 URL 생성
URI Url = URI.create("https://testsite.co.kr/api");
//요청
RequestEntity<String> requestEntity = new RequestEntity<>(headers, HttpMethod.GET, Url);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<JSONObject> responseEntity = restTemplate.exchange(requestEntity, JSONObject.class);
//응답 파싱
JSONObject responseJSON = responseEntity.getBody();
//body에서 "data"부분을 JSON Array로 파싱
JSONArray responseArray = new JSONArray(){{ addAll((Collection)responseJSON.get("data"));}};
ObjectMapper objectMapper = new ObjectMapper();
List<JSONObject> dataList = new ArrayList<>();
for(Object obj : responseArray){
//JSONArray에서 꺼낸 각 JSON을 obj-> Map 으로 변환시켜 사용한다.
Map<String,Object> tmpMap= (Map) obj;
Map<String,Object> listMap = objectMapper.convertValue(tmpMap.getOrDefault("name",null),Map.class);
if(listMap != null) {
listMap.put("myList", tmpMap.get("type"));
JSONObject resultObj = new JSONObject(){{ putAll(listMap);}};
}
}
JSONArray에 add 하기 | addAll(Collection) |
JSONObject에 put하기 | putAll(Map) |
json-simple은 첨이라 사용법이 익숙해지질 않음
반응형
'코딩 관련 > Java' 카테고리의 다른 글
[JAVA] HttpsURLConnection 사용하기 / API 호출 / http 통신 / java http 호출 / java http (0) | 2022.12.27 |
---|---|
[JAVA] API 호출하기 / URI 요청하기 / URI 생성하기 (0) | 2022.06.03 |
[JAVA] SHA256 해시 암호화 Util (0) | 2022.03.23 |
[JAVA] 위경도 변환 / 위경도 거리 계산 / 위경도 연산 / 위경도 거리 구하기 / 위경도 좌표 구하기 (0) | 2022.03.21 |
[JAVA] java AES256 암호화 / AES256 encode / AES256 decode (0) | 2022.02.23 |