본문 바로가기

개발/Java & Spring

[Spring] RESTFul API - GET으로 JSON 데이터 받아와 파싱까지!(JAVA, Spring, Kakao 로컬 API) - 졸업프로젝트[3]

2018.05.12 네이버 블로그에 작성된 글입니다

 


저는 카카오 RESTful API를 사용합니다

앱키니 뭐니 받아오는건 생략하고

좌표 -> 주소 변경 API를 먼저 써보았다.

나에게 하등 도움이 안되었던 개발 사이트 가이드 

 

 

 

너 몬데,, 어떻게 쓰는건데,,

 

 

 

 

찾았다 요놈!


RestTemplate: HTTP 서버와 쉽게 통신 가능한 자바 라이브러리/ 응답을 JSON, xml 형식으로 쉽게 변환이 가능하다고 함 
HttpHeaders: Authorization 내 앱키 어디다가 넣는건지 한참 찾다가 아 헤더에 넣겠구나 해서 한참 찾았던 ㅠㅠ 
RestTemplate.exchange: 메소드 GET으로 해야하는데 뭐 써야지 하다가 찾은 함수! 

정리해놓으면 진짜 별거 아닌데 반나절 넘게걸림

- 결과 코드 -

 
 

 

RestTemplate restTemplate = new RestTemplate(); 

HttpHeaders headers = new HttpHeaders(); 
headers.setContentType(MediaType.APPLICATION_JSON);//JSON 변환 
headers.set("Authorization", appKey); //appKey 설정 ,KakaoAK kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk 이 형식 준수


HttpEntity entity = new HttpEntity("parameters", headers); 
URI url=URI.create("https://dapi.kakao.com/v2/local/geo/coord2regioncode.json?x=?&y=?"); 
//x -> x좌표, y -> y좌표 

ResponseEntity response= restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
//String 타입으로 받아오면 JSON 객체 형식으로 넘어옴

아 쉽게 되는거 없죵
저는 JSON도 처음 다뤄보니까요!
뭐 배열 모양이길래 split이니 trim 이니 쇼를 하다가
아 JSON인데 나 뭐하냐 싶어서 JSON 파싱 시작

 
 
 

 

JSONParser jsonParser = new JSONParser(); 
JSONObject jsonObject = (JSONObject) jsonParser.parse(response.getBody().toString()); 
//저는 Body 부분만 사용할거라 getBody 후 JSON 타입을 인자로 넘겨주었습니다
//헤더도 필요하면 getBody()는 사용할 필요가 없겠쥬

 

https://developers.kakao.com/docs/restapi/local#%EC%A3%BC%EC%86%8C-%EB%B3%80%ED%99%98

 

여기서 확인할 수 있듯이 주소 정보는 documents 이름으로 배열형태로 반환된다. 


그래서,

 
 

 

 

JSONParser jsonParser = new JSONParser();
JSONArray docuArray = (JSONArray) jsonObject.get("documents");
//documents만 뽑아오고  

JSONObject docuObject = (JSONObject) docuArray.get(i); 
//배열 i번째 요소 불러오고
         
logger.info(docuObject.get("keyValue").toString());
//뽑아오기 원하는 Key 이름을 넣어주면 그 value가 반환된다.

     
이제 한시름 놨으니 월요일 교수님 미팅을 위해 지지고 볶고 하러 가야겠당
제가 멋지게 과제 해내서 갈게요 흑흑 화이팅 


※게시글이 너무 결과 지향적이어서 찔리는데,
누굴 알려주려는 목적이라기 보다는 내가 까먹을까봐 기록 용으로 남겨두는거라고 변명해두겠다.
아무도 안보는 것 같긴한데 그래돟ㅎㅎ※