# JSON : 개요

API에 대한 공부를 진행하던 중, JSON에 대해 조금은 알고 있어야 할 것 같아서 포스팅을 진행해본다. JSON이라는 이름은 계속 들어왔지만, 정확하게 알아본 것은 이번이 처음인 것 같다.

1. JSON (JavaScript Object Notation)

- 속성-값 쌍 (attribute-value pairs and array types)
- It can be any other serializable value also
- 데이터 오브젝트(객체)를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용 하는 개방형 표준 포멧
- 비동기 브라우저/서버 통신(AJAX)을 위해, 넓게는 XML(AJAX가 사용)을 대체하는 주요 데이터 포멧 : 이 부분은 정확하게 이해가 되지 않아서 추후 더 깊은 학습이 필요할 것으로 생각됨
- 인터넷에서 자료를 주고 받을 때 그 자료를 표현하는 방법
- 자료의 종류에 제한을 두지 않으며, 특히 컴퓨터 프로그램의 변수 값을 표현하는데 적합한 포멧 을 갖고 있다.

정리하자면, 특정 값들로 이루어진 데이터 객체를 나타내기 위한 방법으로 사용한다고 볼 수 있다.

2. 역사

JSON의 역사를 보면 자바스크립트(그래서 이름도 JavaScript에서 두 글자나 사용하는 배려를 보인다) 언어로부터 파생되어 자바스크립트 구문을 따르는 것으로 알려져 있다.

하지만 JSON의 큰 장점은 '언어 독립형 데이터 포멧'이다. 즉 프로그래밍 언어나 플랫폼에 완벽하게 독립적이기 때문에, 구문 분석이나 JSON 형식의 데이터를 생성하기 위해 굳이 자바스크립트를 사용하지 않아도 된다는 것이다.

(실제로 C, C++, C#, Java, Perl, Python 등 다양한 언어에서 JSON 사용이 가능하다)

3. JSON의 기본 자료형

3.1. 수(Number)



- 정수, 실수(고정 소수점, 부동 소수점)로 구성된다.
- 8진수 또는 16진수로 표현하는 방법은 지원되지 않는다.
- 예시) 정수(74, 891, -19 등), 고정 소수점 실수(3.14 등), 부동 소수점 실수(1e4, 6.78E-5 등)

3.2. 문자열(String)



- 0개 이상의 유니코드 문자들의 연속으로 구성되며, 큰 따옴표(")로 구분되고 역슬래시 이스케이프 문법을 지원한다. 역슬래시 이스케이프 문법에 대해서는 '이곳'을 참조하면 이해가 용이할 것으로 생각된다.
- 유니코드 중 역슬래시(\)와 큰따옴표(")는 바로 사용할 수 없는데, 특히 역슬래시는 제어 문자를 표현하기 위해 사용된다.
= \b 백스페이스
= \f 폼 피드= \n 개행= \r 캐리지 리턴= \t 탭= \" 따옴표= \/ 슬래시= \\ 역슬래시= \uHHHH 16진수 네자리로되어 있는 유니코드 문자
- 예시) "1234", "Hello", "\"JSON\""

3.3. 참/거짓(Boolean) 

3.4. 배열(Array)



- 0 이상으로 이루어진 임의의 종류의 값으로 이루어진 순서가 있는 리스트. 대괄호로 구성되며 쉼표로 각 요소를 구분한다.
- 배열의 각 요소는 기본 자료형이거나 배열, 객체로 구성된다.
- 순서가 있다는 것은 각 순서에 대해 의미가 존재한다는 것이다.
- 예시) [10, {"v" : 20}, [30, "서른"]]

3.5. 객체(Object)



- 순서가 없는 이름/값 쌍의 집합으로, 이름(키)은 문자열로 구성된다.
- 중괄호({})를 사용한다.
- 이름은 문자열로 구성되기 때문에, 반드시 따옴표(")를 사용해야 한다.
- 순서가 무의미하므로, 각 쌍이 입력되는 순서 또한 의미를 갖지 않는다.
- 예시) {"name2" : 40, "name 3" : "value3", "name 1" : true}

3.6. Null : 빈 값을 의미한다.

3.7. Value



- 큰 따옴표 안에 string, number, true, false, null, object, array를 포함할 수 있다.
- 모든 유형의 값들을 담을 수 있는 형식이라고 보인다.

4. JSON 실제 사용 예시

- JSON의 메시지 단위는 배열 또는 객체이다.
- 한 사람에 관한 정보를 갖는 JSON 객체를 생성한다고 할 때, 다음과 같이 구성할 수 있다.

5. 장점

- JSON은 텍스트로 이루어져 있기 때문에, 사람과 기계 모두에게 좋은 가독성을 제공한다.
- 물론 코드 작성에도 매우 용이하다.
- 프로그래밍 언어와 플랫폼에 독립적이기 때문에, 서로 다른 시스템 간 객체 교환에 용이하다.
- 자바스크립트 문법을 채용하였기 때문에, 자바스크립트의 eval 명령어로 즉시 사용 가능하다. 하지만 이는 외부 악성 코드 유입에 대한 우려를 낳을 수 있기 때문에, 대부분의 웹 브라우저에서는 JSON 전용 파서 기능을 내장하여 이러한 위험으로부터의 안전성을 제공하고 있다.

6. 참고 사이트
https://www.json.org/json-ko.html
https://ko.wikipedia.org/wiki/JSON


댓글