JSON(JavaScript Object Notation) 이란 ❓
"키" 와 "값" 의 쌍으로 이루어진 데이터를 쉽게 교환하고 저장하기 위한 텍스트 기반의 데이터 교환 표준이다.
JSON 의 특징
1) 서버와 클라이언트 간의 교류에서 일반적으로 많이 사용된다.
2) 자바스크립트 객체 표기법과 아주 유사하다.
3) 자바스크립트를 이용하여 JSON 형식의 문서를 쉽게 자바스크립트 객체로
변환할 수 있다.
4) JSON 문서 형식은 자바스크립트 객체의 형식을 기반으로 만들어졌다.
5) 자바스크립트의 문법과 굉장히 유사하지만 텍스트 형식일 뿐이다.
6) 다른 프로그래밍 언어를 이용해서도 쉽게 만들 수 있다.
7) 특정 언어에 종속되지 않으며, 대부분의 프로그래밍 언어에서 JSON 포맷의 데이터를
다룰 수 있는 라이브러리를 제공한다.
JSON을 사용하는 이유 ?
: 네트워크를 사용하는 데이터 통신은 데이터를 byte 형태로 전달하는데, 서버와
클라이언트 또는 애플리케이션에서 처리할 데이터를 주고받을 때 쓰는 자료 형식 중
대표적인 것이 "XML" 과 "JSON" 이다.
: 즉, 클라이언트의 요청이 있으면 프론트엔드 담당자와 백엔드 담당자 간 데이터를 주고
받아야 하는데 그 때 사용하는 것이다.
: 특히, "JSON" 은 특정 언어에 종속되지 않고, "XML" 보다 최소한의 용량으로 데이터
전송이 가능하기 때문에 XML 보다 많이 쓰이고 있다고 한다.
JSON 실습하기 ✍
Build System : Gradle
, Gradle DSL : Groovy
로 선택해준다.JSON
또는 JSON IN Java
를 검색하여 가장 1번째에 있는 파일을 다운받는다.Files
의 "View All" 클릭 후 "json-20231013-javadoc.jar" 파일을 다운로드 받는다. 그 다음 새로운 클래스를 만든 뒤, JSON 형식의 문자열을 가지고 와서 실행시켰을때, 아래와 같이 encoding x-windows-949
오류가 뜨는 것을 볼 수 있다.
이것을 해결 하기 위해서 아래의 순서 대로 실시한다.
1) "File" 의 "Settings" 를 클릭한 뒤 encoding
을 검색해준다.
2) "File Encodings" 에서 Project Encoding
을 "UTF-8" 로 맞춰준다.
4) "build" 를 검색하여 "Gradle" 에서 Build and run using
과 Run tests using
을
"IntelliJ IDEA" 로 맞춰준다.
위 처럼 하면 정상적으로 실행될 것이고, 이제부터 맵과 리스트로 구성되어 있는 JSON 형태를 하나씩 분리해가며 데이터를 뽑아보는 연습을 해보겠다. 💻
1) JSON 문자열의 첫 시작이 " { "
로 시작하는데, 이것은 맵 형태라는 것이다. 따라서
맵 형태로 먼저 만들어 주면 되는데, 이때 다운받은 JSON 라이브러리를 사용한다.
JSONObject jsonObject = new JSONObject(json);
2) 만든 맵 형태의 jsonObject 에서 값을 불러와 보는데, 맵형태에서 값을 불러올 때는
키값을 통해 불러올 수 있다. 불러온 뒤 문자열로 변경해준다.
String json2 = jsonObject.get("키값").toString();
3) 불러온 문자열을 확인해보니 이번엔 " [ "
로 시작한다. 그러면 리스트 형태라는
것이고, 문자열을 리스트에 다시 저장해서 불러온다.
JSONArray jsonArrary = new JSONArray(json2);
4) 저장한 리스트에서 값을 불러와 보는데, 리스트에서 값을 불러올 때는 인덱스 번호로
불러온다.
String json3 = jsonArrary.get(인덱스번호).toString();
5) 이런 식으로, 맵과 리스트의 형태로 되어 있는 JSON 문자열을 하나씩 분리해 가며,
문자열 안에 있는 값들을 출력하는 연습을 해보면 된다.
다음으로, 혹시나 다른 프로젝트에서 작업중인 클래스를 실행 시켰을때, 한글깨짐 현상이 나올 수 있다. 이때 해결하는 방법으로 아래와 같이 하니 해결되었다.🧐
1) ✅ Shift
를 2번 클릭하면 나오는 창에서 "vm" 검색 후 Edit Custom VM options
을 클릭한다.
2) ✅ 클릭하면 뜨는 창에 아래의 두 줄을 입력해 준다.
-Dfile.encoding=UTF-8
-Dconsole.encoding=UTF-8
3) 인텔리제이를 다시 실행시킨 뒤 클래스를 Run 해보면 정상적으로 한글이 깨지지 않고
출력될 것이다.
JSON 은 백엔드 개발자가 프론트엔드 개발자 또는 다른 개발자들과 데이터를 주고 받는데 가장 많이 사용되는 데이터 형식으로 실제 현업에서도 많이 쓰인다고 한다.
따라서, JSON 형식의 문자열을 자유자재로 안에 있는 데이터들을 불러오고 할 수 있어야 하는데, 가장 중요한 것은 맵과 리스트의 값을 불러오는 형식이 다르다는 점을 이해하고, {
와 [
로 시작하는 문자열이 있을때 이 것이 맵이냐, 리스트냐를 잘 구분할 줄 알아야 하는 것 같다.