- open api 사용 방법 -
공공데이터 오픈 API 사용하기(휴일 정보 - 한국천문연구원_특일 정보)
공휴일 정보를 불러오기 위해 공공데이터인 한국천문연구원_특일 정보 open API를 사용했다. https://www.data.go.kr/index.do 공공데이터 포털 국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제
study-ce.tistory.com
Open API로 휴일 정보를 가져왔다. 그런데, 만들고자 하는 API에서는 휴일 날짜만 필요했다.
즉, json객체에서 locdate라는 이름의 값만 필요했다.
그래서 json 객체의 이름을 이용해서 값을 추출했다.
open API에서 특정 연도 공휴일 날짜를 출력하는 Spring Boot Controller이다.
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.io.BufferedReader;
import java.io.IOException;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
@ResponseBody
@RequestMapping("/openAPItest_v2")
public String openAPItest_v2(String organization, String yearMonth) throws IOException{
StringBuilder urlBuilder = new StringBuilder("http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getRestDeInfo"); /*URL*/
urlBuilder.append("?" + URLEncoder.encode("serviceKey","UTF-8") + "="+"인증키");/*Service Key*/
urlBuilder.append("&" + URLEncoder.encode("_type","UTF-8") + "=" + URLEncoder.encode("json", "UTF-8")); /*타입*/
urlBuilder.append("&" + URLEncoder.encode("solYear","UTF-8") + "=" + URLEncoder.encode("2022", "UTF-8")); /*연*/
urlBuilder.append("&" + URLEncoder.encode("numOfRows","UTF-8") + "=" + URLEncoder.encode("365", "UTF-8")); /*최대로 출력할 공휴일 수*/
URL url = new URL(urlBuilder.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-type", "application/json");
System.out.println("Response code: " + conn.getResponseCode());
BufferedReader rd;
StringBuilder sb = new StringBuilder();
try {
if(conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) {
rd = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
} else {
rd = new BufferedReader(new InputStreamReader(conn.getErrorStream(), "UTF-8"));
}
JSONParser jsonParser = new JSONParser();
JSONObject jsonObject = (JSONObject) jsonParser.parse(rd); // JSON 데이터로 JSON object 생성
JSONObject responseResult = (JSONObject)jsonObject.get("response"); // json name으로 추출
JSONObject bodyInfo = (JSONObject)responseResult.get("body");
JSONObject itemsInfo = (JSONObject)bodyInfo.get("items");
JSONArray itemInfo = (JSONArray)itemsInfo.get("item"); //item이라는 이름을 가진 json 객체들을 배열로 생성
for(int i=0; i<itemInfo.size(); i++) {
JSONObject day = (JSONObject)itemInfo.get(i); // 배열에 인덱스로 접근
sb.append(day.get("locdate").toString()).append("\n"); // 객체에서 locdate 이름의 값(=휴일)을 추출
}
System.out.println(itemInfo.size());
rd.close();
}catch(Exception e) {
e.printStackTrace();
}
conn.disconnect();
return sb.toString();
}
json 라이브러리를 사용하기 위해 pom.xml에 라이브러리를 추가했다.
(복붙 했을 때는 오류가 생길 수 있는데, 그럴 때 타이핑하면 해결될 수 있다. - 저는 그랬어요:D )
<!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple -->
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
결과
공휴일 날짜만 파싱 성공!!
참고 사이트
[Java] OPEN API 파싱하기 (JSON)
API란, Application Programming Interface의 약자로, 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. OPEN API란, 사용자가
velog.io
[JAVA] java에서 JSON 데이터 다루기. google의 json-simple 사용 방법
참고글 JSON이란? JSON 규칙 JSON JSON은 JavaScript Object Notation 의 줄임말로 말 그대로 자바스크립트에서 객체를 표현하는 방법입니다. var obj = { "name" : "kim", "age" : 29 }; cs 원래는 자..
dololak.tistory.com
'WEB > Spring' 카테고리의 다른 글
공공데이터 오픈 API 사용하기(휴일 정보 - 한국천문연구원_특일 정보) (0) | 2022.06.13 |
---|---|
Spring: log4j.xml 에러 (0) | 2022.03.27 |
Spring: root-context.xml 에러 (0) | 2022.03.27 |
Spring : Tomcat 설정 (0) | 2022.03.24 |
Spring : Eclipse 설치하고 spring 개발 환경 세팅하기 for MAC (0) | 2022.03.24 |