[용어] JSON
JSON?
-
JSON(JavaScript Object Notation)은 javascript에서 객체를 만들 때 사용하는 표현식을 의미한다.
-
데이터를 저장하거나 전송할 때 많이 사용되는 경량의 data 교환 형식이다.
-
JSON 표현식은 사람과 기계 모두 이해하기 쉬우며 용량이 작아서, 최근에는 JSON, XML을 대체해서 데이터 전송 등에 많이 사용한다.
-
JSON은 데이터 포맷일 뿐이며 어떠한 통신 방법도, 프로그래밍 문법도 아닌 단순히 데이터를 표시하는 표현 방법일 뿐이다.
-
JSON은 특정 언어에 종속되지 않으며, 대부분의 프로그래밍 언어에서 JSON 포맷의 데이터를 핸들링 할 수 있는 라이브러리를 제공한다.
XML vs JSON
데이터를 나타내는 방식인 XML과 JSON의 차이는 다음과 같다.
- XML(eXtensible Markup Language)
- Markup Language는 HTML에도 포함된 용어로 HTML과 생긴건 비슷하지만 큰 차이점이 존재한다. HTML의 태그는 이미 약속한 태그들만 가능하다(h태그 같은..). 하지만 XML 태그는 사용자 임의로 만들 수 있다. 즉 태그로 데이터에 대한 설명을 하는 것이다. 이 부분에서 데이터의 표시(Markup)가 되고, 더 필요한 데이터가 생길 시 태그를 추가하거나 태그 안의 내용을 추가할 수 있다는 특징(Extensible)이 있다.
- JSON
- 태그로 표현하는 것이 아닌 중괄호({}) 같은 형식을 기반으로 하며, 중괄호 안의 값을 ‘,’로 나열한 포맷이다.
- 자바스크립트 객체와 마찬가지로 key / value가 존재할 수 있으며, key 값이나 문자열은 항상 쌍따옴표를 이용하여 표기한다.
- name(key)과 value는 콜론(:)으로 이어져있다.
- 객체, 배열 등의 표기를 사용할 수 있다.
- null, number, string, array, object, boolean을 사용할 수 있다.
# 1. name-value형식의 쌍
info1 = {
"firstName" : "KIM",
"lastName" : "TAE HUN",
"email" : "taeheun0325@naver.com"
}
# 2. 값의 리스트 형식(array)
info2 = {
"firstName" : "KIM",
"lastName" : "TAE HUN",
"email" : "taeheun0325@naver.com",
"hobby" : ["soccer", "listening to music"]
}
-
JSON 객체(Object)
JSON에서 객체(Object)는 name-value형식의 쌍의 집합이다. 위 코드에서 info1, info2 가 객체인 것이다.
-
JSON 배열(Array)
JSON에서 배열(Array)는 대괄호로 이루어져있다. 배열의 각 요소는 string, 배열, 객체 등 여러 형태의 자료형이 들어올 수 있다.
a = {'key1' : ['c', 'd'], 'key2' : ['e','f']}
위의 코드 예제를 보면,
가장 큰 객체는 {}로 이루어진 a이고 a라는 객체는 key1과 key2라는 name의 key가 있다.
각 key값은 배열을 value로서 가지고 있고 key1의 value는 c,d를 요소로 가지고 있는 배열이며,** key2의 value는 e,f를 요소로 가지고 있는 배열**이다.