고급 JAVA
JAVA -JSON
햄찌개
2020. 10. 19. 13:49
* JSON : Javascript Object Notation
* 자바스트립트 오브젝트 형식으로 표현된 텍스트
*
* - JSON에서 value 값으로 가능한 데이터 타입
* 1. String
* 2. number
* 3. object(JSON Object)
* 4. array
* 5. boolean
* 6. null
public class JsonSimpleWriterTest {
public static void main(String[] args) throws IOException {
// JSON 데이터 생성
JSONObject jsonObj = new JSONObject();
jsonObj.put("name", "홍길동");
jsonObj.put("job", "학생");
jsonObj.put("age", 30);
jsonObj.put("addr", "대전시 중구 대흥동");
// JSONArray 데이터 생성
JSONArray singerList = new JSONArray();
JSONObject singer = new JSONObject();
singer.put("name", "Etham");
singer.put("gender", "남자");
singer.put("age", 24);
singerList.add(singer);
singer = new JSONObject();
singer.put("name", "Jess Glynne");
singer.put("gender", "여자");
singer.put("age", 32);
singerList.add(singer);
singer = new JSONObject();
singer.put("name", "Alexander Oscar");
singer.put("gender", "남자");
singer.put("age", 23);
singerList.add(singer);
jsonObj.put("singerList", singerList);
FileWriter fw = new FileWriter("D:/D_Other/myJsonFile.txt");
fw.write(jsonObj.toString());
fw.flush();
fw.close();
}
}
공공데이터포털 OPEN API 예제
(레시피 재료 정보를 가져오는 예제)
public class JsonAPISimpleReadTest {
public static void main(String[] args) throws IOException, ParseException {
String svcKey = "Grid_20150827000000000227_1"; // 레시피 재료 정보 조회 서비스
String apiKey = "1df7e8571e8df3f8cbc9b87691ca7d3e4d04f03c593d477e52bf67b03f0b6e1c"; // 개인별 발급.
String startIdx = "1"; // 레시피 재료 시작 순번
String endIdx = "5"; // 레시피 재료 종료 순번
String recipeId = "195428"; // 래시피가 궁금한 음식 ID
URL url = new URL("http://211.237.50.150:7080/openapi/"+ apiKey
+ "/json/"+ svcKey + "/"+startIdx +"/" + endIdx
+"?RECIPE_ID=" + recipeId);
URLConnection urlConnection = url.openConnection();
JSONParser parser = new JSONParser();
Object obj = parser.parse(new InputStreamReader(urlConnection.getInputStream()));
JSONObject jsonFile = (JSONObject)obj;
JSONObject rootObj = (JSONObject)jsonFile.get(svcKey);
//전체 레시피 재료 수
long totalCnt = (long)rootObj.get("totalCnt");
endIdx = totalCnt+"";//레시피 재료 마지막 순번
//================================================================
//endIdx가 5여서 전부다 받아오기 위해 14로 바꿔주고 다시 호출한 것
url = new URL("http://211.237.50.150:7080/openapi/"+ apiKey
+ "/json/"+ svcKey + "/"+startIdx +"/" + endIdx
+"?RECIPE_ID=" + recipeId);
urlConnection = url.openConnection();
obj = parser.parse(new InputStreamReader(urlConnection.getInputStream()));
jsonFile = (JSONObject)obj;
rootObj = (JSONObject)jsonFile.get(svcKey);
JSONObject result = (JSONObject)rootObj.get("result");
String code = (String)result.get("code");
if(code.equals("INFO-000")) { //정상결과이면...
JSONArray list = (JSONArray) rootObj.get("row");
for (Object tempObj : list) {
JSONObject tempJson = (JSONObject)tempObj;
System.out.println("순번 : " +tempJson.get("ROW_NUM"));
System.out.println("레시피ID : " +tempJson.get("RECIPE_ID"));
System.out.println("재료명 : " +tempJson.get("IRDNT_NM"));
System.out.println("용량 : " +tempJson.get("IRDNT_CPCTY"));
System.out.println("재료구분 : " +tempJson.get("IRDNT_TY_NM"));
System.out.println("=============================================================");
}
}
}
}