-
Naver Maps openAPI (1) -JSON미니 2023. 6. 23. 01:50
1. json이란?
>JavaScript Object Notation라는 의미의 축약어로 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 DATA 교환 형식
>Javascript에서 객체를 만들 때 사용하는 표현식을 의미한다.
>JSON 표현식은 사람과 기계 모두 이해하기 쉬우며 용량이 작아서, 최근에는 JSON이 XML을 대체해서 데이터 전송 등에 많이 사용한다.
>JSON은 데이터 포맷일 뿐이며 어떠한 통신 방법도, 프로그래밍 문법도 아닌 단순히 데이터를 표시하는 표현 방법일 뿐이다.
2. json문법
1. JSON 데이터는 이름과 값의 쌍으로 이루어집니다.
2. JSON 데이터는 쉼표(,)로 나열됩니다.
3. 객체(object)는 중괄호({})로 둘러쌓아 표현합니다.
4. 배열(array)은 대괄호([])로 둘러쌓아 표현합니다.
*값(json데이터) 으로 올 수 있는 것은
1. 숫자(number)
2. 문자열(string)
3. 불리언(boolean)
4. 객체(object)
5. 배열(array)
6. NULL
2.1 객체표현
중괄호로 둘러 쌓아 표현한다. 객체는 ,로 여러 프로퍼티를 포함할 수 있다.
2.2 배열
대괄호로 둘러 쌓아 표현한다. 객체나 jsondata를 포함할 수 있으며, 쉼표로 구분한다.
{ "student":[ {"학번":20,"학과":"경제","이름":"개똥"}, {"학번":22,"학과":"경제","이름":"길동"}, "len":2 ] }
3. JAVA에서 JSON객체 사용하기 (Gson,org.JSON)
3.1 Gson
gson은 json구조를 띄는 직렬화된 데이터를 JAVA의 객체로 역직렬화, 직렬화 해주는 자바 라이브러리 입니다. 즉, JSON Object -> JAVA Object 또는 그 반대의 행위를 돕는 라이브러리이다.
아래와 같이 object를 json으로 json을 object로 변환할 때 사용할 수 있다.
//object to json StudentDTO student = new StudentDTO(20,"경제","개똥"); Gson g = new Gson(); String json = g.toJson(student); //json to object StudentDTO st2 = g.fromJson(json,StudentDTO.class); //Object Array to json List<StudentDTO> list = new ArrayList<>(); list.add(new StudentDTO(20,"경제","개똥")); list.add(new StudentDTO(22,"경영","개승")); list.add(new StudentDTO(23,"소비자","개명")); String listJson = g.toJson(list); //json to Object Array list = g.fromJson(listJson, new TypeToken<List<StudentDTO>>(){}.getType());
*json을 객체의 list로 만들 때는 TypeToken(reflectionAPI)를 사용해야한다.
3.2 org.json
Gson은 객체와 json사이의 변환을 돕는 라이브러리라면, org.json은 json자체를 만드는 것을 돕는 라이브러리이다.
//json객체만들기 JSONObject student1 = new JSONObject(); student.put("name","개굴"); student.put("phone","010-2222-2222"); student.put("address","서울시"); JSONObject student2 = new JSONObject(); student.put("name","개구리"); student.put("phone","010-3232-3232"); student.put("address","충청도"); // {"name":"개굴" ...} 만드는 것 //배열에 담기 JSONArray stuArray = new JSONArray(); stuArray.put(student1); stuArray.put(student2); //배열-> json객체 JSONObject obj = new JSONObject(); obj.put("students",stuArray); {"students": [ { "address": "서울시", "phone": "010-2222-2222", "name": "개굴" }, { "address": "충청도", "phone": "010-3232-3232", "name": "개구리" } ]}
3.3 json파일 읽기
String src ="파일명.json"; InputStream is = 클래스명.class.getResourceAsStream(src); //클래스가 존재하는 패키지경로에서 src이름의 파일 찾음 if(is == null) { //..에러 던지거나} JSONTokener tokener = new JSONTokener(is) //스트림,String을 받는다. JSON 파싱도구 // tokener.next()등을 통해 json을 읽을 수 있음 JSONObject obj = new JSONObject(tokener); JSONArray stud = obj.getJSONArray("students"); for(int i=0; i<students.length();i++) { JSONObject student = (JSONObject)students.getJSONObject(i); System.out.print(student.get("name")+"\t"); System.out.print(student.get("address")+"\t"); System.out.println(student.get("phone")); } //JSONObject는 키를 통해 여러 값을 얻을 수 있음 //JSONArray는 index를 통해 여러 객체를 얻을 수 있음
참고자료:
자바TPC 실전프로젝트 (인프런) : 박매일
http://www.tcpschool.com/json/json_basic_structure
https://galid1.tistory.com/501
'미니' 카테고리의 다른 글
Naver Maps openAPI (2) - Geocoding ,Static Map API (0) 2023.06.23 자바 - BattleShip Game (0) 2023.05.14 자바 콘솔 -bulls and cows 게임 (0) 2023.03.10 자바 콘솔 -커피머신 (0) 2023.03.09