ÃֽŠ°Ô½Ã±Û(JAVA)
2019.05.29 / 24:23

5. Java·Î ±â»óû API JSONÀ¸·Î ÆĽÌÇϱâ

Źµ¹ÀÌ°³¹ßÀÚ
Ãßõ ¼ö 269

1. Java·Î ±â»óû API JSONÀ¸·Î ÆĽÌÇϱâ

À̹ø¿¡´Â ¾Õ¿¡¼­ ¹è¿î°ÍµéÀ» ¸ðµÎ »ç¿ëÇؼ­ Java·Î ±â»óû API JSONÀ¸·Î ÆĽÌÀ» Çغ¸°Ú½À´Ï´Ù.


±â»óû API JSONÀ¸·Î ÆĽÌÀ» ÇϱâÀü¿¡ ÇÊ¿äÇÑ Á¤º¸µéÀÌ ÀÖ½À´Ï´Ù. ±×°ÍÀº Àú¹ø¿¡ ¿Ã¸° ±Û¿¡¼­ È®ÀÎÇÑ ³»¿ë°ú µ¿ÀÏÇѵ¥¿ä. ¾Æ·¡¿Í °°½À´Ï´Ù.


À§¿¡ ÀÖ´Â µ¥ÀÌÅ͸¦ ¾Æ·¡¿Í °°Àº Á¶ÇÕÇؼ­ URL¸¦ ÀÛ¼ºÇؾßÇÕ´Ï´Ù. ¾Æ·¡ URLÀÌ Á» ºüÁø ºÎºÐÀÌ ÀÖ´õ¶ó±¸¿ä Á¦°¡ Çغ¸´Ï±î ¾ÈµÇ¼­ ´Ù¸¥ °ÍÀ»À» ã´Ùº¸´Ï ¼­ºñ½ºÅ° ºÎºÐÀÌ ºüÁ®À־ Á¦°¡ ³Ö¾ú½À´Ï´Ù.



¼öÁ¤ÇÑ ÇüÅ´ ¾Æ·¡¿Í °°½À´Ï´Ù. Á¦°¡ Java·Î ÄÚµùÇÑ URLÀÌ¿©¼­ Á¶±Ý ´Þ¶óº¸ÀÏ ¼ö ÀÖ½À´Ï´Ù. Áß°£Áß°£¿¡ º¯¼öµé¿¡´Â ÇØ´çÇÏ´Â Á¤º¸¸¦ ³Ö¾îÁÖ½Ã¸é µË´Ï´Ù.

"http://newsky2.kma.go.kr/service/SecndSrtpdFrcstInfoService2/ForecastSpaceData?"+ "serviceKey=" + serviceKey + "&base_date=" + baseDate + "&base_time=" + baseTime + "&nx="+ nx + "&ny=" + ny + "&_type=json"; 





À§ °°Àº Á¤º¸¸¦ È®ÀÎÇÏ¿´½º¸é Áغñ´Â ³¡³µ½À´Ï´Ù. 

ÇÏÁö¸¸ Á¦°¡ ½ÇÁ¦·Î µ¥ÀÌÅ͸¦ ÆĽÌÇÏ·Á ÇÏ´Ï±î ¹®Á¦°¡ ¹ß»ýÇß½À´Ï´Ù. Á¦°¡ ±âÁ¸¿¡ ±¸Á¶¸¦ ÆľÇÇß´ø µ¥ÀÌÅÍ´Â ¾Æ·¡ »çÁø°ú °°¾Ò´Âµ¥ ½ÇÁ¦·Î ¹ÞÀº µ¥ÀÌÅÍ´Â ±¸Á¶°¡ ´Þ¶ú½À´Ï´Ù. ¿Ö ±×·±Áö´Â ¸ð¸£°Ú½À´Ï´Ù. ±×·¡¼­ ¼Ò½ºÄÚµå Áõ°£¿¡ µ¥ÀÌÅ͸¦ È®ÀÎÇÏ´Â ÀÛ¾÷À» °ÉÃļ­ ´Ù½Ã ÆĽÌÇß½À´Ï´Ù.


ȨÆäÀÌÁö¿¡¼­ ¹ÞÀºµ¥ÀÌÅÍÀÔ´Ï´Ù.




ÀÚ¹Ù¸¦ ÅëÇؼ­¹ÞÀº µ¥ÀÌÅÍÀÔ´Ï´Ù.



ÀÌÁ¦ºÎÅÍ´Â ¼Ò½ºÄڵ带 º¸¸é¼­ ÁÖ¼®À¸·Î ¼³¸íÇÏ°Ú½À´Ï´Ù.

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 VillageWeatherParsing { public static void main(String[] args) { try{ /*¿äûÁ¤º¸ÀÔ·Â * ¾Æ·¡¿Í °°Àº Á¤º¸µéÀº »ç¿ëÀÚ °¡À̵带 È®ÀÎÇÏ¿© ã¾ÆÁÖ½Ã¸é µË´Ï´Ù. * À§µµ °æµµ´Â ¿¢¼¿ÆÄÀÏ ¾È¿¡ ÀÖ½À´Ï´Ù. * */ //ÀÚ½ÅÀÌ Á¶È¸¸¦ ¿øÇÏ´Â Áö¿ªÀÇ °æµµ¿Í À§µµ¸¦ ÀÔ·ÂÇØÁÖ¼¼¿ä String nx = "92"; //°æµµ String ny = "131"; //À§µµ String baseDate = "20180502"; // ÀÚ½ÅÀÌ Á¶È¸ÇÏ°í½ÍÀº ³¯Â¥¸¦ ÀÔ·ÂÇØÁÖ¼¼¿ä String baseTime = "0500"; //ÀÚ½ÅÀÌ Á¶È¸ÇÏ°í½ÍÀº ½Ã°£´ë¸¦ ÀÔ·ÂÇØÁÖ¼¼¿ä // ¼­ºñ½º ÀÎÁõÅ°ÀÔ´Ï´Ù. °ø°øµ¥ÀÌÅÍÆ÷Åп¡¼­ Á¦°øÇØÁØ ÀÎÁõÅ°¸¦ ³Ö¾îÁÖ½Ã¸é µË´Ï´Ù. String serviceKey = "°³Àκ°·Î ¹ÞÀº ÀÎÁõÅ°¸¦ ³Ö¾îÁÖ¼¼¿ä"; // Á¤º¸¸¦ ¸ð¾Æ¼­ URLÁ¤º¸¸¦ ¸¸µé¸éµË´Ï´Ù. ¸Ç ¸¶Áö¸· "&_type=json"¿¡ µû¶ó ¹Ýȯ µ¥ÀÌÅÍÀÇ ÇüÅ°¡ Á¤ÇØÁý´Ï´Ù. String urlStr = "http://newsky2.kma.go.kr/service/SecndSrtpdFrcstInfoService2/ForecastSpaceData?" + "serviceKey=" + serviceKey + "&base_date=" + baseDate + "&base_time=" + baseTime + "&nx="+ nx + "&ny=" + ny + "&_type=json"; URL url = new URL(urlStr); // À§ urlStrÀ» ÀÌ¿ëÇؼ­ URL °´Ã¼¸¦ ¸¸µé¾îÁÝ´Ï´Ù. BufferedReader bf; String line = ""; String result=""; //³¯¾¾ Á¤º¸¸¦ ¹Þ¾Æ¿É´Ï´Ù. bf = new BufferedReader(new InputStreamReader(url.openStream())); //¹öÆÛ¿¡ ÀÖ´Â Á¤º¸¸¦ ÇϳªÀÇ ¹®ÀÚ¿­·Î º¯È¯. while((line=bf.readLine())!=null){ result=result.concat(line); // System.out.println(result); // ¹Þ¾Æ¿Â µ¥ÀÌÅ͸¦ È®ÀÎÇغ¾´Ï´Ù. } // Json parser¸¦ ¸¸µé¾î ¸¸µé¾îÁø ¹®ÀÚ¿­ µ¥ÀÌÅ͸¦ °´Ã¼È­ ÇÕ´Ï´Ù. JSONParser parser = new JSONParser(); JSONObject obj = (JSONObject) parser.parse(result); // Top·¹º§ ´Ü°èÀÎ response Å°¸¦ °¡Áö°í µ¥ÀÌÅ͸¦ ÆĽÌÇÕ´Ï´Ù. JSONObject parse_response = (JSONObject) obj.get("response"); // response ·Î ºÎÅÍ body ã¾Æ¿É´Ï´Ù. JSONObject parse_body = (JSONObject) parse_response.get("body"); // body ·Î ºÎÅÍ items ¹Þ¾Æ¿É´Ï´Ù. JSONObject parse_items = (JSONObject) parse_body.get("items"); // items·Î ºÎÅÍ itemlist ¸¦ ¹Þ¾Æ¿À±â itemlist : µÚ¿¡ [ ·Î ½ÃÀÛÇϹǷΠjsonarrayÀÌ´Ù JSONArray parse_item = (JSONArray) parse_items.get("item"); String category; JSONObject weather; // parse_itemÀº ¹è¿­ÇüÅÂÀ̱⠶§¹®¿¡ Çϳª¾¿ µ¥ÀÌÅ͸¦ Çϳª¾¿ °¡Á®¿Ã¶§ »ç¿ëÇÕ´Ï´Ù. // ÇÊ¿äÇÑ µ¥ÀÌÅ͸¸ °¡Á®¿À·Á°íÇÕ´Ï´Ù. for(int i = 0 ; i < parse_item.size(); i++) { weather = (JSONObject) parse_item.get(i); //String base_Date = (String)weather.get("baseDate"); //String fcst_Time = (String)weather.get("fcstDate"); double fcst_Value = ((Long)weather.get("fcstValue")).doubleValue(); //½Ç¼ö·ÎµÈ °ª°ú Á¤¼ö·ÎµÈ °ªÀÌ µÑ´Ù À־ ½Ç¼ö·Î ÅëÀÏÇß½À´Ï´Ù. //String nX = (String)weather.get("nx"); //String nY = (String)weather.get("ny"); category = (String)weather.get("category"); //String base_Time = (String)weather.get("baseTime"); //String fcscDate = (String)weather.get("fcscDate"); // Ãâ·ÂÇÕ´Ï´Ù. System.out.print("¹è¿­ÀÇ "+i+"¹ø° ¿ä¼Ò"); System.out.print(" category : "+ category); System.out.print(" fcst_Value : "+ fcst_Value); System.out.println(); } // ¸¶Áö¸·¿¡º¸¸é ¿¡·¯°¡ ¹ß»ýÇÏ¿´´Âµ¥ casting¹®Á¦ÀÔ´Ï´Ù. // ÀÌ´Â ¹ÝȯµÇ´Â µ¥ÀÌÅÍŸÀÔÀÌ ´Þ¶ó¼­Àε¥ À̹ø ±Û¿¡¼­´Â ¿©±â±îÁö¸¸ÇÏ°í // µ¥ÀÌÅͺ£À̽º¿¡ ÀÔ·ÂÇÒ¶§´Â ¼öÁ¤Çؼ­ ÇÏ°Ú½À´Ï´Ù. bf.close(); }catch(Exception e){ System.out.println(e.getMessage()); } } }


¾Æ·¡´Â ÇØ´ç ¼Ò½ºÄÚµåÀÇ ½ÇÇà°á°úÀÔ´Ï´Ù.

¸¶Áö¸·¿¡ º¸¸é ¿¡·¯°¡ ¹ß»ýÇϴµ¥ casting¹®Á¦ÀÔ´Ï´Ù. ÀÌ´Â ¹Ýȯµ¥´Â µ¥ÀÌÅÍŸÀÔÀÌ ´Þ¶ó¼­Àε¥ ´ÙÀ½ ±Û¿¡¼­ µ¥ÀÌÅͺ£À̽º¿Í ¿¬µ¿ÇÒ¶§ ¼öÁ¤ÇÏ°Ú½À´Ï´Ù.


ÀÌ°ÍÀ¸·Î À̹ø ±ÛÀº ¸¶Ä¡°Ú½À´Ï´Ù.  ´ÙÀ½ ±Û¿¡¼­´Â µ¥ÀÌÅͺ£À̽º¿¡ µ¥ÀÌÅ͸¦ ³Ö´Â°ÍÀ» Çغ¸°Ú½À´Ï´Ù.



Ãâó: https://kingpodo.tistory.com/16 [Å·Æ÷µµÀÇ ÄÚµù]