nect2r.tistory.com/7

 

[API]Java 유튜브 검색 결과 Json으로 받기

API 문서: https://developers.google.com/youtube/v3/docs/search/list?hl=ko API 키 생성 및 이용하려면: https://console.developers.google.com/apis/dashboard API 문서를 참고하면 자신에게 더욱 알맞은 검..

nect2r.tistory.com


전 게시글에 response.toString()로 받은걸 String으로 받은 상황에서
JSON 객체로 변경하고 원하는 값을 출력하는 것으로 목표

String apiurl = "https://www.googleapis.com/youtube/v3/search";
apiurl += "?key=API_KEY";
apiurl += "&part=snippet&type=video&maxResults=4&videoEmbeddable=true";
apiurl += "&q="+URLEncoder.encode(gameVO.getGameTitle(),"UTF-8");

maxResults=4를 통해 4개의 값을 받습니다.
getaGameTitle()의 값은 호라이즌 제로 던입니다. 
호라이즌 제로 던 의 검색 결과 4개가 출력됩니다.

System.out.println(response.toString());

 

{
   "kind":"youtube#searchListResponse",
   "etag":"3GVJICMymIjhkHIrDb68lqYrP7g",
   "nextPageToken":"CAQQAA",
   "regionCode":"KR",
   "pageInfo":{
      "totalResults":88562,
      "resultsPerPage":4
   },
   "items":[
      {
         "kind":"youtube#searchResult",
         "etag":"glBEgDUkuenLQPzotUYzL_VzdvU",
         "id":{
            "kind":"youtube#video",
            "videoId":"swbuOhjwtvA"
         },
         "snippet":{
            "publishedAt":"2020-08-09T04:56:51Z",
            "channelId":"UCmZeuRfHYowZhf6odtoaNdg",
            "title":"[📖완전판] 호라이즌 제로 던 스토리 한번에 몰아보기",
            "description":"호라이즌 제로 던 스토리 완벽 정리(완전판) -호라이즌 제로 던 스토리 한번에 몰아보기 -호라이즌 제로 던 스토리 요약 -호라이즌 제로 던 스토리 정리 -호라이즌 제로 ...",
            "thumbnails":{
               "default":{
                  "url":"https://i.ytimg.com/vi/swbuOhjwtvA/default.jpg",
                  "width":120,
                  "height":90
               },
               "medium":{
                  "url":"https://i.ytimg.com/vi/swbuOhjwtvA/mqdefault.jpg",
                  "width":320,
                  "height":180
               },
               "high":{
                  "url":"https://i.ytimg.com/vi/swbuOhjwtvA/hqdefault.jpg",
                  "width":480,
                  "height":360
               }
            },
            "channelTitle":"집마 홀릭",
            "liveBroadcastContent":"none",
            "publishTime":"2020-08-09T04:56:51Z"
         }
      },
      {
         "kind":"youtube#searchResult",
         "etag":"avOw-vGgQEzNNDYV_l_q5kfWRNs",
         "id":{
            "kind":"youtube#video",
            "videoId":"n0iWV-qImCA"
         },
         "snippet":{
            "publishedAt":"2017-03-01T10:28:52Z",
            "channelId":"UCVE-zq_yK_InhsVaJPQEttw",
            "title":"호라이즌 제로 던 공략: 입문자 완벽 공략(Horizon Zero Dawn)[PS4]",
            "description":"1.호라이즌 제로 던, 초보자를 위한 완벽 공략! 2.정정: 코일은 \"땜장이\" 스킬 찍어야 안전 제거 가능 3.혹시 코일 소멸해도 안심! 후반에 남아돈다. 4.공략 재생목록: ...",
            "thumbnails":{
               "default":{
                  "url":"https://i.ytimg.com/vi/n0iWV-qImCA/default.jpg",
                  "width":120,
                  "height":90
               },
               "medium":{
                  "url":"https://i.ytimg.com/vi/n0iWV-qImCA/mqdefault.jpg",
                  "width":320,
                  "height":180
               },
               "high":{
                  "url":"https://i.ytimg.com/vi/n0iWV-qImCA/hqdefault.jpg",
                  "width":480,
                  "height":360
               }
            },
            "channelTitle":"캡틴라미[captain ramy]",
            "liveBroadcastContent":"none",
            "publishTime":"2017-03-01T10:28:52Z"
         }
      },
      {
         "kind":"youtube#searchResult",
         "etag":"xU5_sD8YdsYWyHW1G3ktzM1vh1Y",
         "id":{
            "kind":"youtube#video",
            "videoId":"wGFtKKpIBts"
         },
         "snippet":{
            "publishedAt":"2020-10-29T06:26:11Z",
            "channelId":"UCyN9yU_YNGDG6z3PN8sC3KA",
            "title":"호라이즌 제로 던 공략 : 처음 시작하는 초보자 공략",
            "description":"호라이즌 제로 던 초보자 공략 Horizon Zero Dawn Guide and Tips ✅ 초록괴물 구독 : http://bitly.kr/gy98GlHfZ0 처음 호라이즌 제로 던 입문자라면 영상을 통해 ...",
            "thumbnails":{
               "default":{
                  "url":"https://i.ytimg.com/vi/wGFtKKpIBts/default.jpg",
                  "width":120,
                  "height":90
               },
               "medium":{
                  "url":"https://i.ytimg.com/vi/wGFtKKpIBts/mqdefault.jpg",
                  "width":320,
                  "height":180
               },
               "high":{
                  "url":"https://i.ytimg.com/vi/wGFtKKpIBts/hqdefault.jpg",
                  "width":480,
                  "height":360
               }
            },
            "channelTitle":"초록괴물",
            "liveBroadcastContent":"none",
            "publishTime":"2020-10-29T06:26:11Z"
         }
      },
      {
         "kind":"youtube#searchResult",
         "etag":"Q6Kn9a_dw7g-3rub27j0igI_1Ww",
         "id":{
            "kind":"youtube#video",
            "videoId":"mm0EgMMvbdc"
         },
         "snippet":{
            "publishedAt":"2017-03-01T03:55:35Z",
            "channelId":"UCSHVH_AWVUc-C8-D8mh8W6A",
            "title":"호라이즌 제로 던] 대도서관 게임 실황 1화 - PS4 독점 갓겜! 기계 맹수와의 한판 승부! (Horizon Zero Dawn)",
            "description":"170228 호라이즌 제로 던] 대도서관 게임 실황 1화 - PS4 독점 갓겜! 기계 맹수와의 한판 승부! (Horizon Zero Dawn)",
            "thumbnails":{
               "default":{
                  "url":"https://i.ytimg.com/vi/mm0EgMMvbdc/default.jpg",
                  "width":120,
                  "height":90
               },
               "medium":{
                  "url":"https://i.ytimg.com/vi/mm0EgMMvbdc/mqdefault.jpg",
                  "width":320,
                  "height":180
               },
               "high":{
                  "url":"https://i.ytimg.com/vi/mm0EgMMvbdc/hqdefault.jpg",
                  "width":480,
                  "height":360
               }
            },
            "channelTitle":"대도서관TV (buzzbean11)",
            "liveBroadcastContent":"none",
            "publishTime":"2017-03-01T03:55:35Z"
         }
      }
   ]
}


일단 String 타입을 JSONObject 로 변경해주기 위해서
GSON 라이브러리를 사용하겠습니다.

<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1.1</version>
</dependency>


GSON을 추가해줍니다.

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

JSONParser jsonPares = new JSONParser();
JSONObject obj = (JSONObject)jsonPares.parse(response.toString());
JSONArray jArray = (JSONArray) obj.get("items");

 

response.toString() 을 JSONObject로 캐스팅해줍니다.
그러면 obj.get()으로 value를 가져올 수 있는데 안에 items라는 배열로 묶여있기 때문에
items를 불러오고 JSONArray로 캐스팅해줍니다.

for(int i=0;i<jArray.size();i++){
	JSONObject tmp = (JSONObject) (jArray.get(i));//인덱스 번호로 접근해서 가져온다.
	JSONObject snippet = (JSONObject)tmp.get("snippet");

	JSONObject thumbnailsObj = (JSONObject)jsonPares.parse(snippet.get("thumbnails").toString());
	JSONObject defaultObj = (JSONObject)jsonPares.parse(thumbnailsObj.get("high").toString());
	JSONObject idObj = (JSONObject)tmp.get("id");
}

 

for문을 통해서 접근하면 접근할 수 있습니다
JSONObject 에선 get()으로 접근하세요

'Backend > API' 카테고리의 다른 글

[API]Spring-Google Login API연동(OAuth)  (0) 2020.11.30
[API]Java 유튜브 검색 결과 Json으로 받기  (0) 2020.11.24