[API] Java에서 JSON값 활용하기
nect2r.tistory.com/7
전 게시글에 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 |
댓글
이 글 공유하기
다른 글
-
[API]Spring-Google Login API연동(OAuth)
[API]Spring-Google Login API연동(OAuth)
2020.11.30 -
[API]Java 유튜브 검색 결과 Json으로 받기
[API]Java 유튜브 검색 결과 Json으로 받기
2020.11.24