Springboot

공공데이터 활용하기/(2pojo(json데이터 자바오브젝트로 만들어주는 사이트) /(gson사용하기)

25G 2021. 7. 29. 16:08

https://www.data.go.kr/

 

공공데이터 포털

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

www.data.go.kr

일단 여기 가입해서 활용할 데이터를 신청을 해놓는다.

승인이 떨어지기까지 시간이 좀 많이 소요되니 작업하기 전에 미리미리 해놓는 것을 추천합니다.

 

우리나라는 공공데이터 강국이라

고 합니다. 어떻게 강국이 됐을까요?

20년정도 전에 이제 막 스마트 몬이 나오기 시작할 때에 어떤 고등학생이 버스시간에 맞춰서 나오는 게 어려우니까 한 어플을 개발했는데 그 어플이 버스시간을 버스 홈페이지에서 클로링해서 알려주는 어플을 개발한 것이다. 근데 이게 편리해서 사람들이 막 사용하기 시작했는데 트래픽이 많아지니까 버스 홈페이지에 과부하가 걸린 것이다. 그래서 버스회사에서 소송을 했다고 하는데 우여곡절 끝에 고등학생이 승소했다고 한다. 이유는 버스 홈페이지는 공적인 사이트니까 정보공유를 해줄 권리가 있다는 쪽에 손을 들어줬다고 한다.

그러면서 우리나라에는 다양한 api를 많이 제공하게 되는 배경이 된 것이다.

 

국토교통부 항공운항정보 데이터 활용하기

 

 

위 데이터를 어떻게 사용하는지는 상세정보에 나와있다

상세 설명 페이지를 보면 위 데이터가 어떤 데이터인지 상세히 나오고 있다

위 문서를 보지 않고선 절대 활용할 수 없으니 자세히 검토해 본다.

위키 값과 문서를 비교해서 분석해봐야 한다.

 

상세설명페이지에 자바셈플코드

여기서 어떤 목록을 조회하냐에 따라서 요청 url의 값이 바뀌기 때문에 어떤 목록의 데이터를 활용할 것인지 잘 선택됐는지 확인해야 한다.

 

서비스 키 넣기

위항 목에 % 형식으로 주소가 명시돼있다면 주소가 매핑된 것이다. 쿼리 스트링으로 오해하는 것을 막기 위해서=에서 %로 바꿔치기한 것이다.

 

그럼 코드를 보면 인코딩을 해준다고 적혀있으니 =이 있는 인증키 주소로 넣으면 %로 인코딩해주는 것을 알 수 있다.

 

그럼 만약에 역으로 인코딩을 안 해주는 코드에는 %로 넣어주면 된다.

위상 황에서는 인코딩을 안 해주기 때문에 % 형식으로 돼있는 인증키를 넣겠다

 

문서를 보면 요청 변수에 필수 값이 있고 필수값이 아닌 것이 있다. 필수 값은 요청 시에 꼭 넣어주어야 하는 것이고 아니라면 안 넣어도 요청이 가능하지만 추가적인 정보를 제공하는 것이다.

 

위 함수의 구조를 보면 통신해서 받은 url이 200 성공 코드를 받으면 버퍼로 읽어서 while문으로 출력해서 콘솔에 뿌리는 구조이다

컨트롤러를 사용해서 실행시켜본다.

위데이터는 보통 하루가 지나기전에는 바뀌지 않는데이터다.

그래서 계속요청을하기보다는 한번받아서 db에 저장해놓으면 서버 부하가 많이 줄어든다

위 데이터는 xml이다 

데이터를 활용하기 위해서 json으로 받을 수 있도록 설정해준다.

요청할때 _type=json으로 쿼리스트링을 추가시켜주면

 

주소요청시 끝주소를 수정해줫다
json으로 출력된다.
필요한json데이터

위데이터를 자바 오브젝트로 받아야한다.

 

자바 오브젝트로 받으려면

임의의 dto클래스를 만들어서

class Response {} 오브젝트 타입은 클래스를 만들어서 받아준다.

private Response response;

private String airlineNm;

이런식으로 다 하나하나 만들어서 받아야한다그럼 엄청 작업이 오래걸리고 노가다작업이 된다.

https://www.jsonschema2pojo.org/

 

jsonschema2pojo

Reference properties For each property present in the 'properties' definition, we add a property to a given Java class according to the JavaBeans spec. A private field is added to the parent class, along with accompanying accessor methods (getter and sette

www.jsonschema2pojo.org

위사이트는 json데이터를 자바 오브젝트로 자동으로 매핑해주는 사이트, 유용하게 사용할수 있다.

엄청 편리하다.

 

참고 public 클래스는 하나의 자바파일에 하나만 있을수 있다

이제 json데이터를 여기 집어넣기만 하면된다.

gson이라는 json파싱 라이브러리가 있다

메이븐 레파지토리에서 다운받아준다.

 

mvn

 

gson의존성

<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.5</version>
</dependency>

끝.