본문 바로가기
목차
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은 보다 간단하면서도 기계의 측면에서 효율적인 편)

 

주석 기능이 없다는 단점이 있으며, 이를 보완한 JSONC 등이 vscode 생태계 중심으로 제안되어 사용되고 있음.

단, Python 표준 라이브러리에서는 JSON은 지원하나 JSONC는 지원하지 않음.

 

설정파일로도 많이 사용되는 포맷이긴 하지만, 설정파일로는 YAML이나 TOML이 보다 더 사용되는 추세임.

 


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