JSON 알아보기
JSON(JavaScript Object Notation)은 경량의 Data 교환 형식입니다.
일반적으로 JSON은 손쉬운 데이터 교환이 가장 큰 목적이기 때문에 주로 성능이 크게 중요하지 않을 경우에 사용됩니다.
JSON 특징
- JSON은 텍스트로 이루어져 있으므로, 사람과 기계 모두 읽고 쓰기 쉽습니다.
- JSON은 텍스트 기반이므로 프로그래밍 언어와 플랫폼에 독립적입니다.
- JSON은 프로그래밍 언어와 플랫폼에 독립적이기 때문에 서로 다른 시스템간에 객체를 교환하기에 좋습니다.
JSON 구조
JSON 데이터는 name/value
형태의 쌍으로 이루어집니다.
이러한 JSON 데이터는 데이터 이름, 콜론(:), 값의 순서로 구성됩니다.
데이터 이름은 string 이므로, 항상 큰따옴표("")
와 함께 입력해야 합니다.
"데이터이름":값
데이터의 값으로는 다음과 같은 타입이 올 수 있습니다.
- 숫자(number)
- 문자열(string)
- 불리언(boolean)
- 객체(object)
- 배열(array)
- NULL
숫자(Number)
JSON에서 정수, 실수, 지수로 숫자를 표현할 수 있습니다.
하지만 8진수나 16진수 표현방법은 지원되지 않습니다.
{
"정수":1,
"실수":3.14,
"지수":3.4e+4
}
문자열(String)
JSON에서 문자열이란 연속된 문자의 집합입니다.
- 문자열은 항상 큰따옴표("")로 묶어야 하며, 그 안에는 유니코드 문자들이 나열됩니다.
- JSON에서는 문자열을 표현할때 오직 큰따옴표("")만 사용할 수 있습니다. 작은따옴표('')는 사용할 수 없습니다.
- 유니코드 중 역슬래시(\)와 큰따옴표(")는 바로 사용할 수 없으며, 이스케이프 시퀀스로 표현해야 합니다.
JSON에서 사용할 수 있는 이스케이프 시퀀스
이스케이프 시퀀스 | 설명 |
\b | 백스페이스 |
\f | 폼 피드 |
\n | 개행 |
\r | 캐리지 리턴 |
\t | 탭 |
\" | 따옴표 |
\/ | 슬래시 |
\\ | 역슬래시 |
\uHHHH | 16진수 네자리로 되어 있는 유니코드 문자 |
아래는 큰따옴표("")를 표현하기 위해 이스케이스 시퀀스(\")를 사용하는 예제입니다.
{
"name1":"안녕하세요.",
"name2":"반갑습니다. \"yoongrammer\"입니다."
}
728x90
불리언(Boolean)
JSON에서 불리언(boolean)은 true 또는 flase 값으로 표현합니다.
true와 false는 항상 소문자
로 사용해야 합니다.
{
"name1":true,
"name2":false
}
객체(Object)
JSON에서 객체(object)란 name/value 쌍으로 구성된 정렬되지 않은 집합입니다.
- 객체는
중괄호({})
로 둘러쌓아 표현합니다. - 데이터 이름은 string 이므로, 항상 큰따옴표("")와 함께 입력해야 합니다.
- 각 요소들은 쉼표(,)로 구별됩니다.
- 각 요소가 나타나는 순서는 중요하지 않습니다.
{
"name2": 50,
"name3": "값3",
"name1": true
}
배열(Array)
JSON에서 배열(array)이란 여러 개의 데이터가 순서를 가지고 나열된 집합입니다.
- 배열은
대괄호([])
로 둘러쌓아 표현합니다. - 각 요소들은 쉼표(,)로 구별됩니다.
- 각 요소가 나타나는 순서에는 의미가 있습니다.
- 객체와 비슷하지만 배열은 데이터의 값만 나열합니다.
- 배열 인덱스는
0
부터 시작합니다.
{
"name":[
"value1",
"value2",
"value3"
]
}
null
JSON에서 null이란 아무런 값도 가지고 있지 않은 빈 값을 의미합니다.
null은 항상 소문자
로 사용해야 합니다.
{
"name":null
}
사용 예
다음은 한 사람에 관한 정보를 갖는 JSON 객체입니다.
name/value 패턴으로 표현된 것을 확인할 수 있습니다.
{
"이름": "홍길동",
"나이": 25,
"성별": "여",
"주소": "서울특별시 양천구 목동",
"특기": ["농구", "도술"],
"가족관계": {"#": 2, "아버지": "홍판서", "어머니": "춘섬"},
"회사": "경기 수원시 팔달구 우만동"
}
참고: