메뉴

문서정보

목차

JSON

JSON(Javascript Object Notation)은 attribute-value 쌍으로 구성되는 텍스트 기반의 정보 표현 포멧이다. XML과 마찬가지로 서버와 클라이언트간 데이터를 교환하기 위한 목적으로 사용한다. 특히. 웹 애플리케이션에서 널리 사용한다.

원래는 자바스크립트 언어에서 사용하기 위해서 만들었지만, 언어에 독립적 테이터 타입이다. 여러가지 다양한 속성들을 가지는 XML에 비해서, 하나의 attribute와 하나의 key를 가지는 단순한 구조라서 데이터를 만들고 이용하기가 훨씬 쉽다는 장점이 있다. 지금은 대부분의 언어들이 JSON 생성기와 파서 기능을 지원하고 있다.

데이터 타입과 문법

JSON은 아래의 타입을 지원한다. 아래는 개인정보를 포현하는 JSON 파일 예제다. Number, String, Boolean, Array, Object, null을 모두 포함하고 있다.
{
	"firstName": "John",
	"lastName": "Smith",
	"isAlive": true,
	"age": 25,
	"height_cm": 167.6,
	"address": {
		"streetAddress": "21 2nd Street",
		"city": "New York",
		"state": "NY",
		"postalCode": "10021-3100"
	},
	"phoneNumbers": [
	{
		"type": "home",
		"number": "212 555-1234"
	},
	{
		"type": "office",
		"number": "646 555-4567"
	}
	],
		"children": [],
		"spouse": null
}

JSON-RPC

JSON-RPC는 XML-RPC와 SOAP를 대신하는 RPC 프로토콜로, XML대신에 RJSO을 사용한다. JSON의 사양 자체가 단순해서, 가볍게 사용하기에 좋다는 장점이 있다. 복잡한 데이터를 주고 받는 시스템이 아니라면, JSON-RPC를 사용해볼만 하다.
요청 : {"jsonrpc": "2.0", "method": "subtract", "params": [42, 23], "id": 1}
응답 : {"jsonrpc": "2.0", "result": 19, "id": 1}

MIME type

JSON 데이터를 위한 공식 MIME 타입은 "application/json"이다. 이 외에도 오래된 MIME 타입을 지원하기 위해서 "text/json""text/javascript" 도 인식한다.

브라우저에서의 인코딩및 디코딩 지원

최신의 모든 브라우저들은 JSON 인코딩/디코딩 기능을 내장하고 있다. 한때 eval() 함수를 이용해서 JSON 데이터를 처리하기도 했지만, 2009년 이후로는 브라우저에서 지원하는 JSON.parse()와 JSON.stringify()를 이용해서 처리하고 있다. 많은 자바스크립트 라이브러리들 역시 JSON을 지원한다.

장점

단점

메시징 인프라를 개발한다면, JSON 대신에 protocol buffer, thrift와 같은 바이너리 기반의 직렬화 프로토콜을 검토해보자.