본문 바로가기
Java

[Java] 영화진흥위원회 오픈API 사용한 영화 정보 출력 예제

by teamnova 2024. 2. 18.
728x90

안녕하세요 이번 게시글에서는 영화 진흥 위원회 오픈 api를 사용해 영화정보 JSON 데이터를 파싱하고 데이터를 출력하는 간단한 예제를 다루려고합니다. 이 예제를 통해 JSON 데이터의 구조를 이해하고 자바에서 JSON을 다루는 방법을 익힐 수 있습니다.

 

해당 기능을 구현하기 전에 해야할 것은 두가지 입니다.1. 영화 진흥 위원회 오픈 api 사용하기 위한 회원가입, 그리고 인증키 발급해야합니다.https://www.kobis.or.kr/kobisopenapi/homepg/main/main.do

 

영화진흥위원회 오픈API

OPEN API 서비스 영화진흥위원회 영화관입장권통합전산망에서 제공하는 오픈API 서비스로 더욱 풍요롭고 편안한 영화 서비스를 즐겨보세요.

www.kobis.or.kr

-> 위 사이트로 가서 회원가입후 키 발급/관리 에 가셔서 인증키를 발급받으셔야합니다. 

-> 본인이 원하는 api 선택후 url과 결과값 확인한 후 기능 구현하시면 됩니다.

 

제가 사용한 api "영화목록"이고 아래와 같습니다.

https://www.kobis.or.kr/kobisopenapi/homepg/apiservice/searchServiceInfo.do

 

영화진흥위원회 오픈API

제공서비스 영화관입장권통합전산망이 제공하는 오픈API서비스 모음입니다. 사용 가능한 서비스를 확인하고 서비스별 인터페이스 정보를 조회합니다.

www.kobis.or.kr

2. Java에서는 json 라이브러리를 따로 다운받아서 프로젝트에 import 해줘야 json을 처리할 수 있습니다.

https://code.google.com/archive/p/json-simple/downloads

 

Google Code Archive - Long-term storage for Google Code Project Hosting.

 

code.google.com

java에서 라이브러리 다운후 적용하는 방법은 아래 게시글에서 설명되어있으니 참고하시면 될것같습니다.

https://stickode.tistory.com/985

 

[JAVA] Jdatepicker 사용해 캘린더 생성하고 날짜 선택하기

안녕하세요. 이번 포스팅에서는 jdatepicker 라는 라이브러리를 사용해 swing으로 캘린더를 생성하고 유저가 선택한 날짜를 표시하는 예제를 알려드리겠습니다. 우선 jdatepicker 라이브러리를 다운받

stickode.tistory.com

 

우선 시연영상부터 보여드리겠습니다. 

 

 

다음은 전체 코드입니다.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

public class movie {
    public static void main(String[] args) {
        
        // 인증키 (개인이 받아와야함)
        String key = "";
        
        // 파싱한 데이터를 저장할 변수
        String result = "";
        
        try {
            // 영화 정보를 제공하는 웹 서비스에 접속할 URL 생성
            URL url = new URL("http://kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieList.json?key="
                    + key );
            
            // URL을 통해 데이터를 읽어오기 위한 BufferedReader 생성
            BufferedReader bf;
            
            // UTF-8 인코딩으로 데이터를 읽어오기 위해 InputStreamReader로 BufferedReader 초기화
            bf = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
            
            // 읽어온 데이터를 문자열로 저장
            result = bf.readLine();
            
            // JSON 데이터 파싱을 위한 JSONParser 객체 생성
            JSONParser jsonParser = new JSONParser();
            
            // JSON 데이터를 파싱하여 JSONObject로 변환
            JSONObject jsonObject = (JSONObject) jsonParser.parse(result);
            
            // JSON 데이터 출력
            System.out.println(jsonObject);
            
            // 주석 처리된 부분은 하드코딩된 JSON 데이터입니다. 실제로는 API 또는 외부에서 데이터를 가져와야 합니다.
            
            // JSON 데이터 문자열
            // String jsonData = "{\"movieListResult\":{\"totCnt\":98893,\"source\":\"영화진흥위원회\",\"movieList\":[{...}]}}";
            
            // JSON 데이터 파싱
            
            // JSON 데이터에서 "movieListResult" 필드를 추출
            JSONObject movieListResult = (JSONObject) jsonObject.get("movieListResult");
            
            // "movieListResult" 안에 있는 "movieList" 필드를 추출 (영화 목록)
            JSONArray movieList = (JSONArray) movieListResult.get("movieList");
            
            // 영화 목록을 순회하면서 데이터 출력
            for (Object movie : movieList) {
                JSONObject movieData = (JSONObject) movie;
                System.out.println("영화명(한글): " + movieData.get("movieNm"));
                System.out.println("영화명(영문): " + movieData.get("movieNmEn"));
                System.out.println("제작국가: " + movieData.get("nationAlt"));
                System.out.println("영화 장르: " + movieData.get("repGenreNm"));
                System.out.println("제작 연도: " + movieData.get("prdtYear"));
                System.out.println("영화 타입: " + movieData.get("typeNm"));
                // 필요한 다른 데이터도 출력 가능
                System.out.println("--------");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}