728x90
안녕하세요 이번 게시글에서는 영화 진흥 위원회 오픈 api를 사용해 영화정보 JSON 데이터를 파싱하고 데이터를 출력하는 간단한 예제를 다루려고합니다. 이 예제를 통해 JSON 데이터의 구조를 이해하고 자바에서 JSON을 다루는 방법을 익힐 수 있습니다.
해당 기능을 구현하기 전에 해야할 것은 두가지 입니다.1. 영화 진흥 위원회 오픈 api 사용하기 위한 회원가입, 그리고 인증키 발급해야합니다.https://www.kobis.or.kr/kobisopenapi/homepg/main/main.do
-> 위 사이트로 가서 회원가입후 키 발급/관리 에 가셔서 인증키를 발급받으셔야합니다.
-> 본인이 원하는 api 선택후 url과 결과값 확인한 후 기능 구현하시면 됩니다.
제가 사용한 api "영화목록"이고 아래와 같습니다.
https://www.kobis.or.kr/kobisopenapi/homepg/apiservice/searchServiceInfo.do
2. Java에서는 json 라이브러리를 따로 다운받아서 프로젝트에 import 해줘야 json을 처리할 수 있습니다.
https://code.google.com/archive/p/json-simple/downloads
java에서 라이브러리 다운후 적용하는 방법은 아래 게시글에서 설명되어있으니 참고하시면 될것같습니다.
https://stickode.tistory.com/985
우선 시연영상부터 보여드리겠습니다.
다음은 전체 코드입니다.
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();
}
}
}
'Java' 카테고리의 다른 글
[Java] Java Swing으로 구현하는 날씨 기반 상태 변화 시뮬레이션 (0) | 2024.03.21 |
---|---|
[JAVA] 클래스 상속을 활용한 게임만들기 (2) | 2024.02.27 |
[Java] SMTP를 이용한 이메일 발송 (0) | 2023.12.27 |
[Java] Swing을 활용해 간단한 알람 만들기 (0) | 2023.12.23 |
[Java] Java Swing으로 회원가입 & 로그인 프로그램 만들기(2) (0) | 2023.12.14 |