본문 바로가기
카테고리 없음

[Term] JSON (JavaScript Object Notation)

by ds31x 2024. 1. 7.

JSON (JavaScript Object Notation)은

  • JavaScript에서 Object Notation (객체 표기)의 목적으로 제안되었고,
    JavaScript 언어의 subset 임.

하지만, 오늘날
JSON은 프로그램들 간에 데이터를 교환에 사용되는
대표적인 Light-weight data-interchange format으로 자리를 잡음.

 

  • 기본적으로 Text파일이기 때문에 인간도 쉽게 읽을 수 있고,
  • UTF-8과 같은 표준 문자 인코딩을 사용하기 때문에 다양한 프로그래밍 언어로 작성된 프로그램들 사이에서도 쉽게 다룰 수 있음 (parsing).
  • sequence 및 hierarchies 와 같은 구조화된 데이터를 표현할 수 있음.

Syntax

Data Representation : JSON은 크게 다음과 같은 2개의 구조를 취함.

  • key-value pairs의 모임(collection) :
    • 기본적으로 키 (double-quoted)와 해당 키에 대응하는 값의 pair들의 모임으로 구성됨.
      • "key": value 로, colon :을 delimeter로 사용함.
      • key가 double-quoted임을 주의할 것.
      • key-value pair간의 delimeter는 comma , 임.
    • 이같은 모임은 curly bracket, { }으로 싸여지며, 해당 키들을 attributes로 가지는 Object를 가르킴.
    • 프로그래밍 언어들에서 dictionaryhash table등과 같은 구조로 쉽게 매핑되며,
    • OOP에서의 Object에 쉽게 매핑가능해짐.
    • 이 경우, key들간의 순서는 의미를 가지지 않음.
  • ordered list of values :
    • sequence에 해당하는 data structure로, key 대신에 값이 놓여있는 순서를 index로 삼음.
    • arraylist, vector 가 이에 대응하는 대표적인 data type임.
    • square bracket, [ ]으로 싸여짐.

  1. Objects
    • 하나의 Object는 여러 key-value pairs로 구성 (내부에 가짐)되며, 이들 각 pairs들의 순서는 의미가 없음.
    • JSON 문서(or file)은 curly bracket (or brace)으로 둘러싸여진 object들로 구성됨.
    • key-value pair 간의 delimeter는 comma임.
  2. Ordered Lists (or Arrays)
    • 값들의 순서 있는 모임.
    • 순서에 따라 각각의 값들에 접근 가능 (순서가 index.)
    • square bracke으로 둘러싸임.
    • 값들간의 delimeter는 comma임.
  3. Values
    • String (문자열)
      • 문자열은 문자(글자, character)의 sequence로 Unicode로 인코딩됨.
      • double-quote로 둘러쌓임.
      • 만약, double-quote를 문자열 내에서 표시하려면, escape sequnce를 이용 (back-slash 뒤에 double-quote를 놓는 방식).
      • character는 글자가 하나인 string으로 처리됨.
    • Number (숫자)
      • decimal(십진수)로 표현됨.
      • real number와 integer 가 사용됨.
    • Boolean
      • true 또는 false 로 표시됨.
    • White space
      • token사이에는 자유롭게 white space 문자가 위치할 수 있음.

Example

{
  "이름": "가천",
  "성": "김",
  "나이": 21,
  "주소": {
    "세부주소": "수정구 성남대로 1342 AI관 228호",
    "시": "성남",
    "도": "경기도",
    "우편번호": "1312-"
  },
  "전화번호": [
    {
      "종류": "직장",
      "번호": "031 750 2617 "
    },
    {
      "종류": "집",
      "번호": "02 1234-1234"
    }
  ],
  "신규사용자": false
}
  • 위의 예제는 하나의 Object 로 되어 있음.
  • 해당 Object는 이름, 주소 등과 같은 attributes를 가짐.

더 읽어보면 좋은  URLs

2024.01.07 - [분류 전체보기] - [Term] YAML (Yet Another Markup Language)

 

[Term] YAML (Yet Another Markup Language)

Human-friendly Unicode based Data Serialization Language 인간친화적인 유니코드 기반의 데이터 직렬화 언어 https://yaml.org/spec/1.1/#id857168 YAML Ain’t Markup Language (YAML™) Version 1.1 YAML Ain’t Markup Language (YAML™) Vers

ds31x.tistory.com

2024.01.07 - [분류 전체보기] - [CE] Syntax of YAML [Simple Version]

 

[CE] Syntax of YAML [Simple Version]

기본적으로 indentation 으로 구조화를 시킴. indent 는 space 2칸 또는 4칸이 권장됨. 2024.01.07 - [분류 전체보기] - [Term] YAML (Yet Another Markup Language) [Term] YAML (Yet Another Markup Language) Human-friendly Unicode based Da

ds31x.tistory.com