-
JSONProgrammer/Computer Science 2017. 2. 1. 12:18
JSON은 XML에 비해 상대적으로 가벼운 데이터 교환 형식이다.
C 언어의 영향을 받은 언어의 구조체/배열 형식과 유사하여 프로그래머에게 매우 친숙한 형태이다. 1
특히, 고대의 JavaScript의 일부에 토대로 두고 있어서 JavaScript와 그 구조가 매우 유사하다. 2XML과 많이 비교되는데
공통점으로
- 뛰어난 호환성을 제공한다. 많은 프로그램 언어와 웹, 소프트웨어에서 JSON을 지원한다.
- 텍스트 파일로서 사람이 읽을 수 있다. 이는 디버깅에 매우 효과적이다.
- 텍스트 파일임으로 이진 데이타보다 더 많은 용량을 차지한다.
다른점으로는
- 상대적으로 가벼워서 구조가 간단한 데이타에 사용하기에는 적합하다.
- 반면, DTD나 XML 스키마와 같이 언어를 정의하고 확장, 검사하는 도구가 부족하다.
- 메타데이터와 네임스페이스를 제공하지 않는다.
JSON은 오브젝트(object)를 기본 요소로 한다.
오브젝트는 '{'로 시작하여 '}'로 끝난다.
오브젝트는 이름/값의 쌍을 포함한다.
이름/값은 사이에는 ':'이 들어간다.{"foo":1}
오브젝트 내에 이름/값의 쌍은 ',' 구분한다.
마지막 이름/값 쌍에는 ','를 붙이지 않는다.{"foo":1, "bar":"baz", "qux":true}
여러개의 값을 나열할 때는, 배열(array)를 사용한다.
배열은 '['로 시작하여 ']'로 끝난다.
값은 ','로 구분한다.["foo", 1, "bar", "baz"]
이름(name)은 반드시 문자열(string)이어야 한다.
문자열은 큰따옴표(")로 감싼다.
큰따옴표 없이 사용하거나,
{foo:1}
작은따옴표(')로 감싸는 것 모두 올바른 표기가 아니다.
{'foo':1}
값에는 문자열, 숫자, true, false, null, 객체, 배열이 올 수 있다.
json.org의 예제를 첨부한다.
{ "glossary": { "title": "example glossary", "GlossDiv": { "title": "S", "GlossList": { "GlossEntry": { "ID": "SGML", "SortAs": "SGML", "GlossTerm": "Standard Generalized Markup Language", "Acronym": "SGML", "Abbrev": "ISO 8879:1986", "GlossDef": { "para": "A meta-markup language. ...", "GlossSeeAlso": ["GML", "XML"] }, "GlossSee": "markup" } } } } }
두번째 줄 이름 "glossary"의 값은 객체이다.
세번째 줄 이름 "title"의 값은 문자열이다.
열다섯번째 줄 이름 "GlossSeeAlso"의 값은 배열이다.'Programmer > Computer Science' 카테고리의 다른 글
원자적(atomic) 연산과 순서(ordering) 제약 (1) 2021.07.12 여러가지 데이터 표현 양식 비교 (0) 2020.03.11 정규 표현식의 분류에 따른 차이점과 올바른 사용법 (1) 2015.01.19 국내에서 IPv6 주소를 접하기 어려운 이유 (2) 2014.03.14 GLib의 GHashTable로 알아보는 해시 테이블의 충동 해결 방법 (1) 2013.09.17 댓글