본문 바로가기
JSON

JSON datatype

by FraisGout 2020. 7. 4.

타입(datatype)

JSON에서는 데이터의 값으로 사용할 수 있는 다양한 타입을 제공하고 있습니다.

 

JSON에서 제공하는 기본 타입은 다음과 같습니다.

 

 

 

1. 숫자(number)

 

2. 문자열(string)

 

3. 불리언(boolean)

 

4. 객체(object)

 

5. 배열(array)

 

6. null

 

숫자(number)

JSON에서 나타낼 수 있는 숫자의 종류는 다음과 같습니다.

 

 

 

1. 정수(integer)

 

2. 실수(fraction)

 

3. 지수(exponent)

 

 

 

JSON에서는 8진수나 16진수 등을 표현하는 방법은 제공하지 않습니다.

 

정수(integer)

JSON에서 정수는 부호를 가지는 소수 부분이 없는 수를 의미합니다.

 

예제

{

"age": 1

}

 

실수(fraction)

JSON에서 실수는 소수 부분을 가지는 수를 의미합니다.

 

예제

{

"weight": 2.14

}

 

지수(exponent)

JSON에서는 매우 큰 수나 매우 작은 수를 표현할 때 e 표기법을 사용하여 지수로 표현할 수 있습니다.

 

예제

{

"size": 5.8426e+2

}

 

문자열

JSON에서 문자열(string)이란 일련의 연속된 문자의 집합을 의미합니다.

 

이러한 문자열은 큰따옴표("") 안에 유니코드 문자들의 나열로 구성됩니다.

 

 

 

JSON에서 역슬래시(\) 문자는 특정 문자와 함께 사용되어 이스케이프 시퀀스(escape sequence)로 사용됩니다.

 

따라서 JSON 문자열에는 역슬래시(\)와 큰따옴표(")를 바로 사용할 수 없으며, 이스케이프 시퀀스로 표현해야 합니다.

 

예제

{

"name": "식빵"

}

 

자바스크립트에서는 문자열을 표현할 때 큰따옴표("")와 작은따옴표('')를 모두 사용할 수 있지만, JSON에서는 오직 큰따옴표("")만을 사용할 수 있습니다.

이스케이프 시퀀스(escape sequence)

이스케이프 시퀀스(escape sequence)는 문자열이 화면에 출력될 때 사용하게 될 특수한 문자를 위해 만들어졌습니다.

 

이러한 이스케이프 시퀀스는 역슬래시(\)와 특정 문자와의 조합으로 사용할 수 있습니다.

 

 

 

JSON에서 사용할 수 있는 이스케이프 시퀀스는 다음과 같습니다.

 

이스케이프 시퀀스

설명 

\b

백스페이스

\f

폼 피드(form feed)

\n

개행

\r

캐리지 리턴(carriage return)

\t

(tab)

\"

큰따옴표

\/

슬래시

\\

역슬래시

\uHHHH

16진수 네 자리로 표현된 유니코드 문자

 

다음 예제는 JSON 문자열에서 큰따옴표를 표현하기 위해 이스케이프 시퀀스를 사용하는 예제입니다.

 

예제

{

"comment": "안녕하세요. \"식빵\" 입니다."

}

 

 

 

JSON 파서(parser)는 우선 JSON 데이터를 모두 읽어 들입니다.

 

위의 예제처럼 큰따옴표를 이스케이프 시퀀스(\")로 표현하지 않았다면, 식빵이라는 문자열 앞에 있는 큰따옴표에서 문자열이 모두 끝났다고 인식할 것입니다.

 

따라서 JSON 파서는 오류를 발생시킬 것입니다.

 

 

 

이처럼 문자열 내에서 큰따옴표나 역슬래시를 표현하기 위해서는 반드시 이스케이프 시퀀스를 사용하여 JSON 파서에 해당 따옴표는 문자열을 끝내는 따옴표가 아니라는 사실을 알려주어야만 합니다.

 

 

불리언(boolean)

JSON에서 불리언 값은 참(true)과 거짓(false)을 표현합니다.

 

 

 

일부 다른 프로그래밍 언어에서는 true 값으로 1, false 값으로 0을 대신 사용할 수 있습니다.

 

또한, 대소문자의 구분 없이 True, TRUE, False, FALSE 등을 모두 사용할 수 있는 언어도 존재합니다.

 

 

 

하지만 JSON에서 불리언 값은 항상 truefalse를 소문자로 표기해서 사용해야 합니다.

 

 

 

예제

{

"name": "식빵",

"lunch": true

}

 

 

객체(object)

JSON에서 객체(object)란 데이터 이름과 값의 한 쌍으로 구성된 프로퍼티의 정렬되지 않은 집합을 의미합니다.

 

이러한 JSON 객체는 중괄호({})로 둘러싸여 있습니다.

 

 

 

객체에 저장되는 프로퍼티(property)는 데이터 이름과 값의 한 쌍으로 이루어져 있습니다.

 

JSON 객체는 쉼표(,)를 사용하여 이러한 프로퍼티를 여러 개 가질 수 있습니다.

 

이때 프로퍼티의 순서는 중요하지 않으며, 데이터의 이름은 문자열로 반드시 큰따옴표("")를 사용해야 합니다.

 

 

 

예제

{

"name": "식빵",

"family": "웰시코기",

"age": 1,

"weight": 2.14

}

 

객체 안의 객체

JSON에서 데이터 이름과 대응되는 값으로 숫자, 문자열, 불리언뿐만 아니라 또 다른 객체가 올 수도 있습니다.

 

만약 데이터의 값이 객체라면 객체 안에 객체가 포함되는 계층 구조가 형성됩니다.

 

 

 

예제

{

"dog": {

"name": "식빵",

"family": "웰시코기",

"age": 1,

"weight": 2.14,

"owner": {

"ownerName": "홍길동",

"phone": "01012345678"

}

}

}

 

 

 

위의 예제에서 가장 상위 계층의 데이터 이름은 "dog"이며, 데이터값으로 다섯 개의 또 다른 데이터를 가지고 있습니다.

 

그중에서 다섯 번째 데이터인 "owner" 객체는 "ownerName""phone"이라는 또 다른 데이터를 가지고 있습니다.

 

배열(array)

JSON에서 배열(array)이란 여러 개의 데이터가 순서를 가지고 나열된 집합을 의미합니다.

 

이러한 JSON 배열은 대괄호([])로 둘러싸여 있습니다.

 

 

 

JSON 배열은 쉼표(,)를 사용하여 여러 개의 데이터를 나열할 수 있습니다.

 

이 방식은 객체에서 프로퍼티를 나열하는 것과 비슷하지만, 배열은 데이터의 값만을 나열한다는 차이가 있습니다.

 

 

 

JSON 배열은 JSON에서 제공하는 기본 타입을 모두 저장할 수 있습니다.

 

 

 

다음 예제는 세 개의 문자열 요소를 가지는 "dog"라는 이름의 JSON 배열 예제입니다.

 

예제

{

"dog": [

"웰시코기",

"포메라니안",

"푸들"

]

}

 

 

 

JSON에서 배열의 인덱스는 언제나 0부터 시작합니다.

 

따라서 위의 예제에서 "웰시코기"0, "포메라니안"1, "푸들"2의 인덱스를 가지게 됩니다.

 

배열과 객체의 차이점

JSON에서 배열과 객체는 여러 데이터를 묶어놓은 집합이라는 점에서 서로 비슷한 타입입니다.

 

하지만 객체는 프로퍼티의 집합이며, 배열은 데이터값의 집합이라는 차이가 있습니다.

 

 

 

예제

{

"dog": [

"웰시코기",

"포메라니안",

"푸들",

{

"ownerName": "홍길동",

"phone": "01012345678"

}

]

}

 

 

 

위의 예제에서 "dog"라는 이름의 JSON 배열은 문자열뿐만 아니라 객체도 요소로 가지고 있습니다.

 

 

 

대부분의 프로그래밍 언어에서 배열은 여러 타입의 데이터를 동시에 가질 수 없습니다.

 

하지만 자바스크립트 기반의 JSON 배열은 여러 타입의 배열 요소를 가질 수 있습니다.

 

null

JSON에서 null이란 아무런 값도 가지고 있지 않은 빈 값을 의미합니다.

 

JSON에서 이러한 null 값은 항상 null을 소문자로 표기해서 사용해야 합니다.

 

 

 

예제

{

"id": 1,

"name": null

}

 

undefinednull

null은 자바스크립트의 undefined 타입과 혼동하기 쉽습니다.

 

더군다나 JSON에서는 undefined 타입을 제공하지 않으므로, 더욱 유의해야 합니다.

 

 

 

자바스크립트에서 '' 자체가 없다는 의미의 undefined 값은 초기화되지 않은 변수나 존재하지 않는 값에 접근할 때 반환합니다.

 

하지만 JSON에서 null이란 ''을 가지고 있지 않다는 의미를 가지는 하나의 데이터값이라고 할 수 있습니다.

 

 

'JSON' 카테고리의 다른 글

JSON 사용  (0) 2020.07.04
JSON schema  (0) 2020.07.04
JSON 기본  (0) 2020.07.04
JSON 기초  (0) 2020.07.04

댓글