본문 바로가기



JSON (JavaScript Object Notation)은 경량의 DATA-교환 형식이다. 이 형식은 사람이 읽고 쓰기에 용이하며, 기계가 분석하고 생성함에도 용이하다. JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999의 일부에 토대를 두고 있다. JSON은 완벽하게 언어로 부터 독립적이지만 C-family 언어 - C, C++, C#, Java, JavaScript, Perl, Python 그외 다수 - 의 프로그래머들에게 친숙한 관습을 사용하는 텍스트 형식이다. 이러한 속성들이 JSON을 이상적인 DATA-교환 언어로 만들고 있다.



쉡게말해서

속성-값 쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 
인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다. 


비동기 브라우저/서버 통신 (AJAX)을 위해, 넓게는 XML(AJAX가 사용)을 대체하는
 주요 데이터 포맷이다. 

특히, 인터넷에서 자료를 주고 받을 때 그 자료를 표현하는 방법으로 알려져 있다. 
자료의 종류에 큰 제한은 없으며, 특히 컴퓨터 프로그램의 변수값을 표현하는 데 적합하다.





JSON의 기본 자료형은 다음과 같다

1. 수(Number)

2. 문자열(String): 0개 이상의 유니코드 문자들의 연속. 
                         문자열은 큰 따옴표(")로 구분하며 역슬래시 이스케이프 문법을 지원한다.

3. 참/거짓(Boolean): true 또는 false 값

4. 배열(Array): 0 이상의 임의의 종류의 값으로 이루어진 순서가 있는 리스트. 
                     대괄호로 나타내며 요소는 쉼표로 구분한다.

5. 객체(Object): 순서가 없는 이름/값 쌍의 집합으로, 이름(키)이 문자열이다.

6. null: 빈 값으로, null을 사용한다.



장점
1. JSON은 텍스트로 이루어져 있으므로, 사람과 기계 모두 읽고 쓰기 쉽다.

2. 프로그래밍 언어와 플랫폼에 독립적이므로, 서로 다른 시스템간에 객체를 교환하기에 좋다.

3. 자바스크립트의 문법을 채용했기 때문에, 자바스크립트에서 eval 명령으로 곧바로 사용할 수 있다. 
   이런 특성은 자바스크립트를 자주 사용하는 웹 환경에서 유리하다. 
   그러나 실질적으로 eval 명령을 사용하면 외부에서 악성 코드가 유입될 수 있다. 

4. 모질라 파이어폭스 3.5, 인터넷 익스플로러 8, 오페라 10.5, 사파리, 구글 크롬 등 대부분의 
   최신 웹 브라우저는 JSON 전용 파서 기능을 내장하고 있으므로 
   이런 기능을 사용하는 것이 더 안전할 뿐만 아니라 빠른 방법이다.




수(Number)

기본 자료형의 수는 다음과 같이 표현된다. C나 자바에서의 8진수와 16진수를 표현하는 방법은 지원되지 않는다.

정수
42
1974
750
-114
-273

실수(고정 소수점)
3.14
-2.718

실수(부동 소수점)
1e4
2.5e12
3.4e+4
4.56e-8
5.67E+10
6.78E-5


문자열(String)

항상 큰 따옴표(")로 묶어야 하며, 그 안에는 유니코드 문자들이 나열된다. 유니코드 중 역슬래시(\)와 큰따옴표(")는 바로 사용할 수 없다. 역슬래시는 제어문자를 표현하기 위해 사용되며 다음과 같은 의미를 지닌다.

\b 백스페이스
\f 폼 피드
\n 개행
\r 캐리지 리턴
\t 탭
\" 따옴표
\/ 슬래시
\\ 역슬래시
\uHHHH 16진수 네자리로되어 있는 유니코드 문자

"1234"
"Love"
"O-matic"
"한글"
"\"JSON\""





배열(Array)

배열은 대괄호[]로 나타낸다. 배열의 각 요소는 기본 자료형이거나 배열, 객체이다. 각 요소들은 쉼표(,)로 구별된다. 각 요소가 나타나는 순서에 의미가 있다.

1  [10, {"v": 20}, [30, "마흔"]]





객체(Object)

객체는 이름/값 쌍의 집합으로, 중괄호{}를 사용한다. 이름은 문자열이기 때문에 반드시 따옴표를 하며, 값은 기본 자료형이거나 배열, 객체이다. 각 쌍들은 쉼표(,)로 구별된다. 각 쌍이 나오는 순서는 의미가 없다.

 {"name2": 50, "name3": "값3", "name1": true}

JSON 메시지 단위는 배열이나 객체이다. 위의 두 예는 JSON 메시지가 될 수 있다.





예제

다음은 한 사람에 관한 정보를 갖는 JSON 객체이다.
1  {
2     "이름": "테스트",
3     "나이": 25,
4     "성별": "여",
5     "주소": "서울특별시 양천구 목동",
6     "특기": ["농구", "도술"],
7     "가족관계": {"#": 2, "아버지": "홍판서", "어머니": "춘섬"},
8     "회사": "경기 수원시 팔달구 우만동"
9  }


엉망진창

개인 블로그 입니다. 코딩, 맛집, 정부정책, 서비스, ~방법 등 다양한 정보를 소개합니다