ABOUT ME

개똥에 대한 진지한 탐구를 합니다. 완전한 영혼의 성장을 위해서 개똥에 대한 정보를 공유합니다.

Today
Yesterday
Total
  • JSON
    Programmer/Computer Science 2017. 2. 1. 12:18

    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의 예제를 첨부한다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    {
      "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의 부분 집합으로 많이 알고 있는데, 일부 형식만 차용한 언어 중립적인 형식이다. [본문으로]

    댓글

Designed by Tistory.