본문 바로가기

Dev/공공데이터&API연동

공공데이터-보건복지부_코로나19 시·도발생_현황

728x90
반응형

공공데이터를 자주 보게 되면서 필요한 API를 찾아서 정보를 제공하는 아이템을 개발하고 있다

 

이번에는 공공데이터 중 보건복지부에서 제공하는 코로나 API를 개발한 정보를 제공하려고 한다.

 

제공 정보는 API를 통해서 호출 하는 정보까지만 표시하는 JAVA 소스 이다.

 

공공데이터 URL은 https://www.data.go.kr/

 

보건복지부 코로나19 시도발생 현황

URL은 www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15043378

 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr

위의 URL에 가면 요청 변수 및 응답 값 해당 API의 참고 문서를 확인할수 있습니다.

public static void main(String args[]){
		
	String myKey = "공공데이터 key;
	String url = "http://openapi.data.go.kr/openapi/service/rest/Covid19/getCovid19SidoInfStateJson";		// 도시검색
	String decodeServiceKey = "";
		
	try {
		decodeServiceKey = URLDecoder.decode(myKey, "UTF-8");
	} catch (UnsupportedEncodingException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}

	String req_date = "20200720";		
	RestTemplate restTemplate = getCustomRestTemplate();		

	UriComponents builder = UriComponentsBuilder.fromHttpUrl(url)
		.queryParam("ServiceKey", decodeServiceKey)
		.queryParam("numOfRows", "30")
		.queryParam("pageNo", "1")
		.queryParam("startCreateDt", req_date)
		.queryParam("endCreateDt", req_date)
		.build(false); 

	String response = restTemplate.getForObject(builder.toUriString(), String.class);	        

	JSONParser jsonParser = new JSONParser();		
	try {
		JSONObject rtn_jsonObj = (JSONObject) jsonParser.parse(response);
		JSONObject rtn_jsonObj_response = (JSONObject) jsonParser.parse(rtn_jsonObj.get("response").toString());
		String rtn_response = rtn_jsonObj.get("response").toString();
			
		JSONObject rtn_jsonObj_response_header = (JSONObject) jsonParser.parse(rtn_jsonObj_response.get("header").toString()); // header		
		JSONObject rtn_jsonObj_response_body = (JSONObject) jsonParser.parse(rtn_jsonObj_response.get("body").toString());		
		int total_cnt = Integer.parseInt(rtn_jsonObj_response_body.get("totalCount").toString());
	
		if(total_cnt>0){
	      	JSONObject rtn_jsonObj_response_body_items = (JSONObject) jsonParser.parse(rtn_jsonObj_response_body.get("items").toString());				
		  JSONArray rtn_jsonArray_response_item = (JSONArray) jsonParser.parse(rtn_jsonObj_response_body_items.get("item").toString());		
		  if(rtn_jsonArray_response_item.size()>0){
		    for(int i=0; i<rtn_jsonArray_response_item.size();i++){
			 JSONObject temp_item = (JSONObject) rtn_jsonArray_response_item.get(i);
			 String fd_seq 	= temp_item.get("seq") !=null && !temp_item.get("seq").toString().equals("")	? temp_item.get("seq").toString() : "";
			 String fd_date	= req_date;
			 String fd_create_dt = temp_item.get("createDt") !=null && !temp_item.get("createDt").toString().equals("") ? temp_item.get("createDt").toString() : "";
			 String fd_death_cnt = temp_item.get("deathCnt") !=null && !temp_item.get("deathCnt").toString().equals("") ? temp_item.get("deathCnt").toString() : "";
			 String fd_gubun_kr	= temp_item.get("gubun") !=null && !temp_item.get("gubun").toString().equals("") ? temp_item.get("gubun").toString() : "";
			 String fd_gubun_cn	= temp_item.get("gubunCn") !=null && !temp_item.get("gubunCn").toString().equals("") ? temp_item.get("gubunCn").toString() : "";
			 String fd_gubun_en	= temp_item.get("gubunEn") !=null && !temp_item.get("gubunEn").toString().equals("") ? temp_item.get("gubunEn").toString() : "";
			 String fd_inc_dec = temp_item.get("incDec") !=null && !temp_item.get("incDec").toString().equals("") ? temp_item.get("incDec").toString() : "0";
			 String fd_isol_clear_cnt = temp_item.get("isolClearCnt") !=null && !temp_item.get("isolClearCnt").toString().equals("")? temp_item.get("isolClearCnt").toString() : "0";
			 String fd_isol_ing_cnt	= temp_item.get("isolIngCnt") !=null && !temp_item.get("isolIngCnt").toString().equals("") ? temp_item.get("isolIngCnt").toString() : "0";
			 String fd_local_occ_cnt = temp_item.get("localOccCnt") !=null && !temp_item.get("localOccCnt").toString().equals("") ? temp_item.get("localOccCnt").toString() : "0";
			 String fd_qur_rate = temp_item.get("qurRate") !=null && !temp_item.get("qurRate").toString().equals("") ? temp_item.get("qurRate").toString() : "-";
			 String fd_std_day 	= temp_item.get("stdDay") !=null && !temp_item.get("stdDay").toString().equals("") ? temp_item.get("stdDay").toString() : "";
			 String fd_update_dt = temp_item.get("updateDt") !=null && !temp_item.get("updateDt").toString().equals("") ? temp_item.get("updateDt").toString() : "";
		    }
         }
	   }			
	} catch (ParseException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}  

* 소스화면이 지저분하게 보이는점 이해해주세요~

728x90
반응형