728x90
json-simple
https://blog.naver.com/yandul83/220380749175
XML to JSON
https://m.blog.naver.com/yandul83/220432077444
ObjectMapper 사용
의존성 설정
<!-- ObjectMapper 사용 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.1</version>
</dependency>
응답 데이터의 구조를 잘 파악해야 됩니다.
HashMap에 키값으로 getRecommendedKr 이 있을 것이고
그 내부에 ["header", item"] 키들이 있을 것입니다..
그래서 get("getRecommendedKr").get("item") 이렇게 접근해야 data 리스트에 배열에 접근할수 있습니다.
핵심 코드
// json 파싱
ObjectMapper objectMapper = new ObjectMapper();
Map<String, Object> map = new HashMap<>();
map= objectMapper.readValue(sb.toString(), new TypeReference <Map<String,Object>>(){});
Map<String, Object> getRecommendedKr = (Map<String, Object>) map.get("getRecommendedKr");
List<Map<String, Object>> itemList = (List<Map<String, Object>>) getRecommendedKr.get("item");
List<RecommenedService> recommenedServices = new ArrayList<>();
public class BusanThemaApiExplorer
{
String serviceKey= "3D";
int pageNo = 1;
int numOfRows=10;
String resultType="json";
String UC_SEQ="";
public void requestAPI()
{
try {
StringBuilder urlBuilder = new StringBuilder("http://apis.data.go.kr/6260000/RecommendedService/getRecommendedKr"); /*URL*/
urlBuilder.append("?serviceKey="+serviceKey);
urlBuilder.append("&pageNo=" +pageNo); /*페이지번호*/
urlBuilder.append("&numOfRows="+numOfRows); /*한 페이지 결과 수*/
urlBuilder.append("&resultType=" + resultType); /*JSON방식으로 호출 시 파라미터 resultType=json 입력*/
//urlBuilder.append("&UC_SEQ=" + UC_SEQ); /*콘텐츠 ID*/
System.out.println(urlBuilder.toString());
URL url = new URL(urlBuilder.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-type", "application/json");
System.out.println("Response code: " + conn.getResponseCode());
BufferedReader rd=null;
if(conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) {
rd = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
} else {
rd = new BufferedReader(new InputStreamReader(conn.getErrorStream(),"UTF-8"));
}
StringBuilder sb = new StringBuilder();
String line;
while ((line = rd.readLine()) != null) {
sb.append(line);
}
// json 파싱
ObjectMapper objectMapper = new ObjectMapper();
Map<String, Object> map = new HashMap<>();
map= objectMapper.readValue(sb.toString(), new TypeReference <Map<String,Object>>(){});
Map<String, Object> getRecommendedKr = (Map<String, Object>) map.get("getRecommendedKr");
List<Map<String, Object>> itemList = (List<Map<String, Object>>) getRecommendedKr.get("item");
List<RecommenedService> recommenedServices = new ArrayList<>();
for(Map<String, Object> item :itemList)
{
RecommenedService rs= RecommenedService.builder()
.uc_seq(item.get("UC_SEQ").toString())
.main_title(item.get("MAIN_TITLE").toString())
.gugun_nm(item.get("GUGUN_NM").toString())
.cate2_nm(item.get("CATE2_NM").toString())
.lat(item.get("LAT").toString())
.lng(item.get("LNG").toString())
.main_place(item.get("MAIN_PLACE").toString())
.title(item.get("TITLE").toString())
.main_img_normal(item.get("MAIN_IMG_NORMAL").toString())
.main_img_thumb(item.get("MAIN_IMG_THUMB").toString())
.itemcntnts(item.get("ITEMCNTNTS").toString()).build();
recommenedServices.add(rs);
System.out.println("test1: "+rs.getMain_title());
}
rd.close();
conn.disconnect();
} catch (UnsupportedEncodingException | MalformedURLException | ProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} /*Service Key*/ catch (IOException e) {
System.out.println("IOException");
e.printStackTrace();
}
}
}
System.out.println("test1: "+rs.getMain_title());
'Language > JAVA' 카테고리의 다른 글
인텔리제이 설치를 위한 교육용 라이센스 받기 (0) | 2020.08.22 |
---|---|
JDBC , DB , try-with-resources (Java 1.7이상) 자원해제 (0) | 2020.06.01 |
javafx TableView 테이블뷰 / listView 리스트뷰 (0) | 2020.05.09 |
javafx 참고 라이브러리 (0) | 2020.05.03 |
코딩 실력 참고 사이트 / 공공데이터 (0) | 2020.03.18 |
댓글