seong
공공데이터 다루기 (JSON) 본문
Json 데이터를 자바에서 주고 받기 위해 Gson 라이브러리 설치
1. 많이 다운로드 된 버전 선택
https://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.5
2. 프로젝트 라이브러리로 등록
공공데이터 JAVA와 통신
1. 공공데이터 홈페이지 로그인 -> 마이페이지
2. 데이터 활용 신청
3. 조회 서비스 클릭 후 아래 "초단기실황조회"사용
ServiceKey | 위쪽 일반 인증키를 복사해서 넣기 |
dataType | Json |
base_date | 원하는 날짜 |
dast_time | 원하는 시간 |
nx , ny | 현재 위치를 나타내는 값 (확인은 문서를 확인 해야한다.) |
미리보기를 클릭하면 아래와 같은 JSON 데이터가 나온다
4. 주소를 복사해서 자바에 넣어주기
데이터들을 읽기 위해 버퍼리더에 모두 담아준다.
5. 데이터 확인
BufferReader 로 읽은 데이터들을 temp에 담아준다.
temp에 담긴 데이터들을 StringBuilder를 이용해 출력
버퍼에 남아 있는 데이터가 null이 될 때 까지 출력
Dto를 만들어주고 원하는 데이터 가져오기
1. Json 온라인 뷰어를 통해 타입들을 모두 확인
2. 복사한 값들을 모두 넣고 Viewer 클릭
그럼 아래 처럼 타입과 생김새들이 보인다. 이것을 통해 자바 오브젝트로 변환해 주면된다.
3. 자바 오브젝트로 변환하기
만들때 주의할 점 : 데이터의 타입, 이름이 동일해야 한다.
Response를 모두 담을 RespDto
Response
Header
Body
Items
Item
4. 원하는 데이터 찾아서 출력
작성 순서
1. Gson 객체 생성
2. RespDto를 생성 -> fromJson속성을 이용해 JSON데이터를 자바가 읽을 수 있게 변환.
3. 원하는 데이터를 찾아 변수에 저장.
4. 변수 출력
<소스코드>
package json01;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import com.google.gson.Gson;
public class jsonEx01 {
public static void main(String[] args) {
try {
URL url = new URL(
"http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getUltraSrtNcst?serviceKey=nLjOIPFq0S5WXz%2BJEJOnXftVEU90nnb3JokthTLMS10R8IeMJo017%2FAhcW7p92jLcUOhEv2MS8lMlHHPhmwaBw%3D%3D&pageNo=1&numOfRows=1000&dataType=json&base_date=20220823&base_time=2129&nx=55&ny=127");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String temp = "";
while ((temp = br.readLine()) != null) {
sb.append(temp);
}
Gson gson = new Gson();
RespDto respDto = gson.fromJson(sb.toString(), RespDto.class);
String temperature = respDto.getResponse().getBody().getItems().getItem().get(3).getObsrValue();
System.out.println(temperature);
} catch (Exception e) {
e.printStackTrace();
}
}
}
'자바 > 자바 실습' 카테고리의 다른 글
자바 디자인패턴 - OCP, 전략 패턴 (0) | 2022.09.26 |
---|---|
자바 디자인패턴 - 싱글톤 패턴 원리 (0) | 2022.09.26 |
Thread - 스레드를 이용한 소켓 통신 (0) | 2022.08.23 |
소켓 통신(3) - JSON 타입으로 데이터 받기 (0) | 2022.08.23 |
스레드 (비동기,동기) (0) | 2022.08.23 |