Theory/Data Exchange

JSON

JSON은 XML에 비해 상대적으로 가벼운 데이터 교환 형식이다.
C 언어의 영향을 받은 언어[각주:1]의 구조체/배열 형식과 유사하여 프로그래머에게 매우 친숙한 형태이다.
특히, 고대의 JavaScript의 일부에 토대로 두고 있어서 JavaScript와 그 구조가 매우 유사하다.[각주:2]


XML과 많이 비교되는데

공통점으로

  • 뛰어난 호환성을 제공한다. 많은 프로그램 언어와 웹, 소프트웨어에서 JSON을 지원한다.
  • 텍스트 파일로서 사람이 읽을 수 있다. 이는 디버깅에 매우 효과적이다.
  • 텍스트 파일임으로 이진 데이타보다 더 많은 용량을 차지한다.

다른점으로는

  • 상대적으로 가벼워서 구조가 간단한 데이타에 사용하기에는 적합하다.
  • 반면, DTDXML 스키마와 같이 언어를 정의하고 확장, 검사하는 도구가 부족하다.
  • 메타데이터와 네임스페이스를 제공하지 않는다.


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"의 값은 배열이다.


2012/12/21 - [Theory/Data Exchange] - XML

  1. C++, Java, JavaScript, Perl, Python 등 [본문으로]
  2. JavaScript의 부분 집합으로 많이 알고 있는데, 일부 형식만 차용한 언어 중립적인 형식이다. [본문으로]
저작자 표시 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Theory > Data Exchange' 카테고리의 다른 글

JSON  (0) 2017.02.01
XML 스키마  (0) 2012.12.28
DTD  (0) 2012.12.27
XML  (0) 2012.12.21

알림

이 블로그는 구글에서 제공한 크롬에 최적화 되어있고, 네이버에서 제공한 나눔글꼴이 적용되어 있습니다.

카운터

Today : 79
Yesterday : 122
Total : 164,455

티스토리 툴바