JSON(제이슨[1], JavaScript Object Notation)은 속성-값 쌍( attribute–value pairs and array data types (or any other serializable value))으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다. 비동기 브라우저/서버 통신 (AJAX)을 위해, 넓게는 XML(AJAX가 사용)을 대체하는 주요 데이터 포맷이다. 특히, 인터넷에서 자료를 주고 받을 때 그 자료를 표현하는 방법으로 알려져 있다. 자료의 종류에 큰 제한은 없으며, 특히 컴퓨터 프로그램의 변수값을 표현하는 데 적합하다.
본래는 자바스크립트 언어로부터 파생되어 자바스크립트의 구문 형식을 따르지만 언어 독립형 데이터 포맷이다. 즉, 프로그래밍 언어나 플랫폼에 독립적이므로, 구문 분석 및 JSON 데이터 생성을 위한 코드는 C, C++, C#, 자바, 자바스크립트, 펄, 파이썬 등 수많은 프로그래밍 언어에서 쉽게 이용할 수 있다.
JSON 포맷은 본래 더글라스 크록포드가 규정하였다. RFC 7159와 ECMA-404라는 두 개의 경쟁 표준에 의해 기술되고 있다. ECMA 표준은 문법만 정의할 정도로 최소한으로만 정의되어 있는 반면 RFC는 시맨틱, 보안적 고려 사항을 일부 제공하기도 한다.[2] JSON의 공식 인터넷 미디어 타입은 application/json
이며, JSON의 파일 확장자는 .json
이다.
자료형과 문법
기본 자료형
JSON의 기본 자료형은 다음과 같다:
- 수(Number)
- 문자열(String): 0개 이상의 유니코드 문자들의 연속. 문자열은 큰 따옴표(")로 구분하며 역슬래시 이스케이프 문법을 지원한다.
- 참/거짓(Boolean):
true
또는false
값 - 배열(Array): 0 이상의 임의의 종류의 값으로 이루어진 순서가 있는 리스트. 대괄호로 나타내며 요소는 쉼표로 구분한다.
- 객체(Object): 순서가 없는 이름/값 쌍의 집합으로, 이름(키)이 문자열이다.
null
: 빈 값으로,null
을 사용한다.
수(Number)
기본 자료형의 수는 다음과 같이 표현된다. C나 자바에서의 8진수와 16진수를 표현하는 방법은 지원되지 않는다.
- 정수
74
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 }
장점
- JSON은 텍스트로 이루어져 있으므로, 사람과 기계 모두 읽고 쓰기 쉽다.
- 프로그래밍 언어와 플랫폼에 독립적이므로, 서로 다른 시스템간에 객체를 교환하기에 좋다.
- 자바스크립트의 문법을 채용했기 때문에, 자바스크립트에서
eval
명령으로 곧바로 사용할 수 있다. 이런 특성은 자바스크립트를 자주 사용하는 웹 환경에서 유리하다. 그러나 실질적으로eval
명령을 사용하면 외부에서 악성 코드가 유입될 수 있다. 모질라 파이어폭스 3.5, 인터넷 익스플로러 8, 오페라 10.5, 사파리, 구글 크롬 등 대부분의 최신 웹 브라우저는 JSON 전용 파서 기능을 내장하고 있으므로 이런 기능을 사용하는 것이 더 안전할 뿐만 아니라 빠른 방법이다.
JSON 데이터 교환 포맷 : http://www.json.org/
JSON 포멧터 : https://jsonformatter.org/
JSON 검사기 : https://codebeautify.org/jsonvalidator
ref : https://ko.wikipedia.org/wiki/JSON
'서버(Server) > 인터넷과 개념' 카테고리의 다른 글
정적 웹 페이지, 동적 웹 페이지 (0) | 2018.05.12 |
---|---|
호스트(Host) 와 포트(Port) (0) | 2018.05.10 |
서버 사이드(server-side)와 클라이언트 사이드란 (0) | 2018.04.16 |
ASP.NET의 정의 (0) | 2018.04.16 |
HTTP vs Socket 통신차이 (0) | 2018.04.12 |