Open API에서 공휴일 날짜 파싱 (JSON)

- 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