[1] 검색어 바꾸기 (query 받기)
[NaverShopSearch.java]
public class NaverShopSearch {
public String search(String query) {
RestTemplate rest = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.add("X-Naver-Client-Id", "GuziZfI6S6a2kj4i6n1h");
headers.add("X-Naver-Client-Secret", "czg3oFpmZg");
String body = "";
HttpEntity<String> requestEntity = new HttpEntity<String>(body, headers);
ResponseEntity<String> responseEntity = rest.exchange("https://openapi.naver.com/v1/search/shop.json?query="+ query, HttpMethod.GET, requestEntity, String.class);
HttpStatus httpStatus = responseEntity.getStatusCode();
int status = httpStatus.value();
String response = responseEntity.getBody();
System.out.println("Response status: " + status);
System.out.println(response);
return response;
}
public static void main(String[] args) {
NaverShopSearch naverShopSearch = new NaverShopSearch();
naverShopSearch.search("아이맥");
}
}
수정된 부분들 ↑
[2] org.json 패키지 설치하기
https://mvnrepository.com/ 에서 json검색
가장 많이 사용하는 20160810 버전을 사용해본다.
△ Gradle 선택하고 복사
△ build.gradle 에서 dependencies {} 안에 붙여넣고
△ dependencies : Run
△ build Success 시키고
△ 새로고침 버튼까지 눌러주면 라이브러리를 쓸 수 있는 상태가 된다.
[3] 문자열 정보를 JSON Object로 바꾸기
[NaverShopSearch.java] - 하단 수정
public static void main(String[] args) {
NaverShopSearch naverShopSearch = new NaverShopSearch();
String result = naverShopSearch.search("아이맥");
JSONObject rjson = new JSONObject(result);
System.out.println(rjson);
}
△ rjson이 정상적으로 생성됐음을 확인 / items라는 키값 안에 검색 결과가 들어감 (json 리스트 (배열))
[4] JSON Object에서 items 배열 꺼내기
[NaverShopSearch.java] - 하단 수정
위 코드에서 아래 추가
JSONArray items = rjson.getJSONArray("items");
rjson에서 JSONArray를 꺼내겠다. 키값은 "items"
*sout문은 지워도 됨 (아까 rjson생성 확인한거)
[5] JSONArray로 for 문 돌기
[NaverShopSearch.java] - 하단 수정
for (int i=0; i<items.length(); i++) {
JSONObject itemJson = (JSONObject) items.get(i);
System.out.println(itemJson);
}
꺼낸 배열에 itemJson이라는 이름을 붙이겠다.
그리고 출력
☞메인 메소드 실행
[6] JSONObject에서 String, int 데이터 뽑기
[NaverShopSearch.java] - 하단 수정
String title = itemJson.getString("title");
String image = itemJson.getString("image");
int lprice = itemJson.getInt("lprice");
String link =itemJson.getString("link");
[7] ItemDto.java 클래스 생성하기
src > main > java > com.xxx.xxx > models > ItemDto 생성
@Getter
public class ItemDto {
private String title;
private String link;
private String image;
private int lprice;
public ItemDto(JSONObject itemJson) {
this.title = itemJson.getString("title");
this.link = itemJson.getString("link");
this.image = itemJson.getString("image");
this.lprice = itemJson.getInt("lprice");
}
}
[8] fromJSONtoItems method 만들기
[NaverShopSearch.java] - 하단 for문에서
이런식으로 ItemDto List 생성해서 써먹으면 되는데, 이걸 메소드로 만들어서 따로 빼자.
public List<ItemDto> fromJSONtoItems(String result) {
JSONObject rjson = new JSONObject(result);
JSONArray items = rjson.getJSONArray("items");
List<ItemDto> itemDtoList = new ArrayList<>();
for (int i=0; i<items.length(); i++) {
JSONObject itemJson = (JSONObject) items.get(i);
ItemDto itemDto = new ItemDto(itemJson);
itemDtoList.add(itemDto);
}
return itemDtoList;
}
- NaverShopSearch.java 전체
package com.sparta.week04.utils;
import com.sparta.week04.models.ItemDto;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList;
import java.util.List;
public class NaverShopSearch {
public String search(String query) {
RestTemplate rest = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.add("X-Naver-Client-Id", "GuziZfI6S6a2kj4i6n1h");
headers.add("X-Naver-Client-Secret", "czg3oFpmZg");
String body = "";
HttpEntity<String> requestEntity = new HttpEntity<String>(body, headers);
ResponseEntity<String> responseEntity = rest.exchange("https://openapi.naver.com/v1/search/shop.json?query="+ query, HttpMethod.GET, requestEntity, String.class);
HttpStatus httpStatus = responseEntity.getStatusCode();
int status = httpStatus.value();
String response = responseEntity.getBody();
System.out.println("Response status: " + status);
System.out.println(response);
return response;
}
public List<ItemDto> fromJSONtoItems(String result) {
JSONObject rjson = new JSONObject(result);
JSONArray items = rjson.getJSONArray("items");
List<ItemDto> itemDtoList = new ArrayList<>();
for (int i=0; i<items.length(); i++) {
JSONObject itemJson = (JSONObject) items.get(i);
ItemDto itemDto = new ItemDto(itemJson);
itemDtoList.add(itemDto);
}
return itemDtoList;
}
public static void main(String[] args) {
NaverShopSearch naverShopSearch = new NaverShopSearch();
String result = naverShopSearch.search("아이맥");
JSONObject rjson = new JSONObject(result);
JSONArray items = rjson.getJSONArray("items");
}
}
'study > spring | java' 카테고리의 다른 글
[Select Shop] 셀렉샵 만들기 6. 관심 상품 등록하기 (0) | 2021.06.06 |
---|---|
[Select Shop] 셀렉샵 만들기 5. 관심 상품 조회하기 (0) | 2021.06.06 |
[Select Shop] 셀렉샵 만들기 4. 프로젝트 설계 (0) | 2021.06.06 |
[Select Shop] 셀렉샵 만들기 3. java에 네이버 API 적용하기 (0) | 2021.06.06 |
[Select Shop] 셀렉샵 만들기 2. 네이버 API 사용하기 (0) | 2021.06.06 |