Notice
Recent Posts
Recent Comments
Tags
- 하드 마이그레이션
- Mac Oracle
- 강제이동
- XSS PHP
- 말줄임표시
- asp.net core Select
- 바코드 생성하기
- ASP.Net Core 404
- 파일업로드 체크
- XSS방어
- javascript 바코드 생성
- 타임피커
- javascript 바코드스캔
- javascript 유효성체크
- ViewBag
- ViewData
- SSD 복사
- 바코드 스캔하기
- 404에러페이지
- 파일업로드 유효성체크
- php 캐쉬제거
- asp.net dropdownlist
- 하드 윈도우 복사
- jquery 바코드생성
- TempData
- django 엑셀불러오기
- 맥 오라클설치
- javascript redirection
- asp.net Select
- jquery 바코드
웹개발자의 기지개
java 미세먼지경보 open API JSON으로 파싱하기1 ( json 객체화 ) 본문
Java
java 미세먼지경보 open API JSON으로 파싱하기1 ( json 객체화 )
http://portfolio.wonpaper.net 2019. 12. 2. 09:25요즘 open API로 많이들 접속해서 연동하는 사이트가 있다.
먼저 미세먼지 관련 정보를 검색하고 신청하고 승인을 받자 그래야 서비스 인증키를 받아서, 결과를 돌려볼 수 가 있다.
참고문서를 보고 xml 이나 json 형식으로 데이터에 따라 선택적으로 response 결과값을 받아 볼 수가 있다.
하단부에 원하는 형식때로 미리보기하여 데이터를 예시적으로 다운받을 수 도 있다.
이클립스로 java 작성해보자.
우선은 json 데이터를 객체화 시키는 라이브러리를 찾아서 추가해야 한다.
https://code.google.com/archive/p/json-simple/downloads
이클립스 파일 > 속성 클릭하여 해당 라이브러리 jar 파일을 추가시켜 놓자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
import java.net.URL;
import java.net.URLEncoder;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
public class JsonExam1 {
public static void main(String[] args) {
// 미세먼지 경보 정보 조회 서비스 - 한국환경공단 api 서비스
try {
// 인증키
String serviceKey = "인증키값";
String urlStr = "http://openapi.airkorea.or.kr/openapi/services/rest/UlfptcaAlarmInqireSvc/getUlfptcaAlarmInfo";
urlStr += "?"+ URLEncoder.encode("ServiceKey","UTF-8") +"=" + serviceKey;
urlStr += "&"+ URLEncoder.encode("numOfRows","UTF-8") +"=200";
urlStr += "&"+ URLEncoder.encode("pageNo","UTF-8") +"=1";
urlStr += "&"+ URLEncoder.encode("year","UTF-8") +"=2019";
urlStr += "&"+ URLEncoder.encode("_returnType","UTF-8") +"=json";
URL url = new URL(urlStr);
String line = "";
String result = "";
BufferedReader br;
br = new BufferedReader(new InputStreamReader(url.openStream()));
while ((line = br.readLine()) != null) {
result = result.concat(line);
//System.out.println(line);
}
// JSON parser 만들어 문자열 데이터를 객체화한다.
JSONParser parser = new JSONParser();
JSONObject obj = (JSONObject)parser.parse(result);
// list 아래가 배열형태로
// {"list" : [ {"returnType":"json","clearDate":"--",.......} ]
JSONArray parse_listArr = (JSONArray)obj.get("list");
String miseType = "";
// 객체형태로
// {"returnType":"json","clearDate":"--",.......},...
for (int i=0;i< parse_listArr.size();i++) {
JSONObject weather = (JSONObject) parse_listArr.get(i);
String dataDate = (String) weather.get("dataDate"); // 발령날짜
String districtName = (String) weather.get("districtName"); // 발령지역
String moveName = (String) weather.get("moveName"); // 발령권역
String issueDate = (String) weather.get("issueDate"); // 발령일자
String issueTime = (String) weather.get("issueTime"); // 발령시간
String issueVal = (String) weather.get("issueVal"); // 발령농도
String itemCode = (String) weather.get("itemCode"); // 미세먼지 구분 PM10, PM25
String issueGbn = (String) weather.get("issueGbn"); // 경보단계 : 주의보/경보
String clearDate = (String) weather.get("clearDate"); // 해제일자
String clearTime = (String) weather.get("clearTime"); // 해제시간
String clearVal = (String) weather.get("clearVal"); // 해제시 미세먼지농도
if (itemCode.equals("PM10")) {
miseType = "";
} else if (itemCode.equals("PM25")) {
miseType = "초미세먼지";
}
StringBuffer sb = new StringBuffer();
sb.append("발령날짜 : " + dataDate + ", 지역 : " + districtName + " ("+ moveName +"), " + "발령시간 : "+ issueDate + " " + issueTime + ", 농도 : " + issueVal + " ("+ issueGbn +") " + miseType);
System.out.println(sb.toString());
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
|
cs |
[ 실행화면 ]
'Java' 카테고리의 다른 글
[java] 위도,경도 좌표 두 지점사이의 거리 구하기 (0) | 2020.06.26 |
---|---|
[java] 배열내 요소 모두 삭제, 리셋하기 (0) | 2020.06.11 |
Jsoup 으로 웹페이지 소스 파싱2 (네이버/다음 실시간 검색어 추출) (0) | 2019.07.21 |
Jsoup 으로 웹페이지 소스 파싱1 (최근 로또 당첨번호 확인) (0) | 2019.06.27 |
json 이용을 위하여 Gson 추가하기 (0) | 2019.04.13 |
Comments