JSON은 JavaScript Object Notation의 약자이다.
JSON은 좀더 쉽게 데이터를 교환하고 저장하기 위하여 만들어진 텍스트 기반의 데이터 교환 표준이다.
이러한 JSON은 XML의 대안으로서 좀 더 쉽게 데이터를 교환하고 저장하기 위하여 고안 되었다. 또한 JSON은 텍스트 기반이므로 어떠한 프로그래밍 언어에서도 JSON 데이터를 읽고 사용할 수 있다.
🔔 예제)
{
"language": [
{
"name": "HTML",
"category": "web",
"developer": "W3C"
},
{
"name": "CSS",
"category": "web",
"developer": "W3C"
},
{
"name": "Java",
"category": "application",
"developer": "Oracle"
},
{
"name": "Python",
"category": "application",
"developer": "Python"
}
]
}
JSON은 다음과 같은 특징을 가진다.
JSON은 2009년에 더글라스 크록포드(Douglas Crockford)가 처음으로 규정하였다. 현재 JSON은 RFC 7159와 ECMA-404라는 두 개의 경쟁 표준에 의해 규정되고 있다.
ECMA 표준에서는 문법만 정의할 정도로 최소한의 정보만 정의되어 있으며, RFC 표준은 문법 및 보안에 관련된 사항까지 일부 제공하고 있다.
JSON 표기법과 프로그래밍 언어별 지원 라이브러리에 대한 더 자세한 사항은 다음 링크를 참고하면 된다.
XML은 Extensible Marup Language의 약자이다. 이러한 XML은 HTML과 매우 비슷한 문자 기반의 마크업 언어(text-based markup language)이다. 이 언어는 사람과 기계가 동시에 읽기 편한 구조로 되어 있다.
XML은 HTML처럼 데이터를 보여주는 목적이 아닌, 데이터를 저장하고 전달할 목적으로만 만들어졌다. 또한, XML 태그는 HTML 태그처럼 미리 정의되어 있지 않고, 사용자가 직접 정의할 수 있다.
JSON과 XML은 다음과 같은 공통점을 가지고 있다.
하지만 JSON과 XML은 다음과 같은 차이점도 가지고 있다.
🔔 예제) XML
<dog>
<name>식빵</name>
<family>웰시코기<family>
<age>1</age>
<weight>2.14</weight>
</dog>
위의 예제를 JSON 형태의 데이터로 바꾸면 다음과 같다.
{
"name": "식빵",
"family": "웰시코기",
"age": 1,
"weight": 2.14
}
XML 문서는 XML DOM(Document Object Model)을 이용하여 해당 문서에 접근한다.
하지만 JSON은 문자열을 전송받은 후에 해당 문자열을 바로 파싱하므로, XML보다 더욱 빠른 처리 속도를 보여준다. 따라서 HTML과 자바스크립트가 연동되어 빠른 응답이 필요한 웹 환경에서 많이 사용되고 있다.
하지만 JSON은 전송받은 데이터의 무결성을 사용자가 직접 검증해야 한다. 따라서 데이터의 검증이 필요한 곳에서는 스키마를 사용하여 데이터의 무결성을 검증할 수 있는 XML이 아직도 많이 사용되고 있다.
JSON은 자바스크립트의 객체 표기법에서 리터럴(literal)과 프로퍼티(property)를 표현하는 방법만 가져와서 사용한다. 따라서 JSON 데이터는 모양과 규칙이 매우 단순하다. 그로 인해 브라우저 영역에서도 쉽고 빠르게 그 의미를 해석할 수 있으며, 다른 프로그래밍 언어에서도 구현하기 쉽다.
리터럴(literal)은 변수와 다르게 해석되는 값 그 자체를 의미한다.
다음 예제에서 등장하는 값은 모두 리터럴이다.
🔔 예제)
12 // 숫자 리터럴
"JSON" // 문자열 리터럴
true // 불리언 리터럴
💡 TIP ? 변수(variable)란 데이터(data)를 저장할 수 있는 메모리 공간을 의미하며, 그 값이 변경될 수 있다.
객체(object)란 실생활에서 우리가 인식할 수 있는 사물로 이해할 수 있다. JSON에서 객체란 이름(name)과 값(value)으로 구성된 프로퍼티(property)의 정렬되지 않은 집합이다.
다음 예제는 이름과 값으로 이루어진 네 쌍의 프로퍼티를 가지는 "강아지" 객체를 나타내는 예제이다.
🔔 예제)
{
"name": "식빵",
"family": "웰시코기",
"age": 1,
"weight": 2.14
}
JSON 표준의 창시자인 더글라스 크록포드는 JSON에는 주석이 들어가지 않는 것이 바르다고 규정하고 있다.
그것은 서로 다른 시스템 간의 연동과 호환성을 위한 조치였다.
반드시 주석을 사용해야 한다면, 주석이 포함된 JSON 데이터를 파싱하기 전에 주석만을 먼저 제거해야 한다. 하지만 되도록 JSON에는 주성을 사용하지 않는 것이 좋다.
JSON은 자바스크립트의 객체 표기법으로부터 파생된 부분 집합이다.
따라서 JSON 데이터는 다음과 같은 자바스크립트 객체 표기법에 따른 구조로 구성된다.
JSON 데이터는 이름과 값의 쌍으로 구성된다. 이러한 JSON 데이터는 데이터 이름 클론(:), 값의 순서로 구성된다.
문법
"데이터 이름" : 값
다음 예제는 데이터의 이름이 "name"이고, 값은 "식빵"이라는 문자열을 갖는 JSON 데이터의 예제이다.
🔔 예제)
"name" : "식빵"
데이터의 이름도 문자열이므로, 항상 큰 따옴표("")와 함께 입력해야 한다.
데이터의 값으로는 다음과 같은 타입이 올 수 있다.
JSON 객체는 중괄호({})로 둘러쌓아 표현한다.
또한, JSON 객체는 쉼표(,)를 사용하여 여러 프로퍼티를 포함할 수 있다.
🔔 예제)
{
"name": "식빵",
"family": "웰시코기",
"age": 1,
"weight": 2.14
}
JSON 객체를 그림으로 나타내면 다음과 같다.
JSON 배열은 대괄호([])로 둘러쌓아 표현한다.
또한, JSON 배열은 쉼표(,)를 사용하여 여러 JSON 데이터를 포함할 수 있다.
다음 예제는 배열의 이름이 "dog"이고, 3개의 JSON 객체를 요소로 가지는 JSON 배열의 예제이다.
🔔 예제)
"dog": [
{"name": "식빵", "family": "웰시코기", "age": 1, "weight": 2.14},
{"name": "콩콩", "family": "포메라니안", "age": 3, "weight": 2.5},
{"name": "젤리", "family": "푸들", "age": 7, "weight": 3.1}
]
JSON 배열을 그림으로 나타내면 다음과 같다.
JSON 사용법 (0) | 2018.11.16 |
---|---|
[JSON] 스키마 (0) | 2018.11.15 |
JSON 타입 (1) | 2018.11.15 |