본문 바로가기
목차
CE

[Term] JSON (JavaScript Object Notation) :

by ds31x 2024. 1. 7.
728x90
반응형

JSON (JavaScript Object Notation)은

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

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

 

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

web app의 응답은 json 양식을 많이 이용함.

 

YAML과 함께 2001년 등장하였음.

(YAML은 JSON의 superset이라고도 볼 수 있어서 JSON은 보다 간단하면서도 기계의 측면에서 효율적인 편)


Syntax

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

  • key-value pairs의 모임(collection) :
    • 기본적으로 키 (double-quoted)와 해당 키에 대응하는 값의 pair들의 모임으로 구성됨.
      • "key": value 로, colon :을 delimiter로 사용함.
      • key가 double-quoted임을 주의할 것.
      • key-value pair간의 delimiter는 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 간의 delimiter는 comma임.
  2. Ordered Lists (or Arrays)
    • 값들의 순서 있는 모임.
    • 순서에 따라 각각의 값들에 접근 가능 (순서가 index.)
    • square bracke으로 둘러싸임.
    • 값들간의 delimiter는 comma임.
    • 주의: Python과 달리 마지막에 comma로 끝나선 안됨-value간 사이에만 위치.
  3. Values
    • String (문자열)
      • 문자열은 문자(글자, character)의 sequence로 Unicode로 인코딩됨.
      • double-quote로 둘러쌓임: singl-quote 사용 및 multi-line string등 불가.
      • 만약, double-quote를 문자열 내에서 표시하려면, escape sequnce를 이용 (back-slash 뒤에 double-quote를 놓는 방식).
      • character는 글자가 하나인 string으로 처리됨.
      • 기본 encoding으로는 utf-8을 권장.
    • Number (숫자)
      • decimal(십진수)로 표현됨.
      • real number와 integer 가 사용됨: complex number는 기본 지원타입이 아님.
    • Boolean
      • true 또는 false 로 표시됨.
      • 소문자로 시작하는 것에 유의
    • null 
      • Python에서의 None에 해당함.
      • 값이 없음을 의미.
    • White space
      • token사이에는 자유롭게 white space 문자가 위치할 수 있음.

Example

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

더 읽어보면 좋은  URLs

2025.08.06 - [CE] - [Term] Serialization-Data Exchanged Format

 

[Term] Serialization-Data Exchnaged Format

Serialization의 일반적 의미메모리 객체 및 데이터를저장/전송 가능한 형태로변환하는 일반적인 개념메모리의 객체/데이터 구조를 "저장/전송 가능한 형태"로 변환하는 과정컴퓨터 메모리에 흩어

ds31x.tistory.com

2025.08.06 - [Python] - Python에서 JSON 다루기-json모듈

 

Python에서 JSON 다루기-json모듈

1. JSON이란?JSON (JavaScript Object Notation)은 경량의 데이터 교환 형식.데이터 교환 형식은 다른 이름으로 Serialized Data라고도 불리며, JSON은 그 중에서 Text Serialization 방식. JavaScript에서 시작되었지만 현

ds31x.tistory.com


2024.01.07 - [CE] - [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.1YAML Ain’t Markup Language (YAML™) Versio

ds31x.tistory.com

2024.01.07 - [CE] - [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 Data

ds31x.tistory.com

https://ds31x.blogspot.com/2023/07/ce-markup-languages.html

 

CE : Markup Languages

1. 정의 tag 등을 이용 하여 data의 structure 및 표현방식 등을 기술(describe) 하는 language. 문서의 기본 정보(content)에 추가적인 정보 (어떻게 시각적으로 표현할 것인지 혹은 content의 structure에...

ds31x.blogspot.com


 

728x90

'CE' 카테고리의 다른 글

[CE] Compilation 의 종류  (0) 2024.01.18
[CE] Text file: Text 파일이란?  (0) 2024.01.07
[CE] Syntax of YAML [Simple Version]  (0) 2024.01.07
[Term] YAML (Yet Another Markup Language)  (0) 2024.01.07
[Term] Prompt 란? : 프롬프트 의 정의.  (0) 2024.01.05