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
를 가르킴. - 프로그래밍 언어들에서
dictionary
나hash table
등과 같은 구조로 쉽게 매핑되며, - OOP에서의
Object
에 쉽게 매핑가능해짐. - 이 경우, key들간의 순서는 의미를 가지지 않음.
- 기본적으로 키 (double-quoted)와 해당 키에 대응하는 값의 pair들의 모임으로 구성됨.
- ordered list of values :
- sequence에 해당하는 data structure로, key 대신에 값이 놓여있는 순서를 index로 삼음.
array
나list
,vector
가 이에 대응하는 대표적인 data type임.- square bracket,
[ ]
으로 싸여짐.
Object
s- 하나의 Object는 여러 key-value pairs로 구성 (내부에 가짐)되며, 이들 각 pairs들의 순서는 의미가 없음.
- JSON 문서(or file)은 curly bracket (or brace)으로 둘러싸여진 object들로 구성됨.
- key-value pair 간의 delimeter는 comma임.
Ordered List
s (or Arrays)- 값들의 순서 있는 모임.
- 순서에 따라 각각의 값들에 접근 가능 (순서가 index.)
- square bracke으로 둘러싸임.
- 값들간의 delimeter는 comma임.
- 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 문자가 위치할 수 있음.
- String (문자열)
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)
2024.01.07 - [분류 전체보기] - [CE] Syntax of YAML [Simple Version]