티스토리 뷰
백엔드 개발을 하다 보면 데이터베이스(DB)에 있는 정보를 클라이언트(브라우저나 앱)에게 보내줘야 할 때가 많다. 그런데 여기서 궁금증이 생겼다.
DB는 데이터를 엑셀 시트처럼 '표(Table)' 형태로 가지고 있는데, 이걸 대체 어떤 모양으로 포장해서 보내줘야 클라이언트가 깔끔하게 알아들을 수 있을까? 그때 등장하는 게 바로 JSON이다.
쉽게 말해, JSON은 DB에 있는 데이터를 누가 봐도 이해하기 쉬운 '명함' 형태로 만들어주는 방식이라고 생각하면 좋다.
DB에 아래와 같은 '가게 정보' 표가 있다고 상상해보자.
데이터베이스 테이블 예시 (가게 정보)
| id | name | rating | location |
| 1 | Pizza Heaven | 4.7 | Busan |
| 2 | Burger World | 4.5 | Seoul |
여기서 'Pizza Heaven'이라는 가게의 정보 한 줄(Row)을 클라이언트에게 보내주고 싶다.
이 데이터를 그냥 통째로 던져주는 게 아니라, 아래처럼 생긴 '가게 명함'을 한 장 만들어서 보내는 것이다.
{
"id": 1,
"name": "Pizza Heaven",
"rating": 4.7,
"location": "Busan"
}
관계를 하나씩 뜯어보면 아주 간단하다.
- "name", "rating"처럼 명함에 적힌 항목 이름 => 이게 바로 JSON의 '키(key)'다. DB 테이블의 컬럼(column) 이름에 해당한다.
- "Pizza Heaven", 4.7처럼 항목 옆에 적힌 실제 내용물 => 이게 바로 JSON의 '값(value)'이다. DB 테이블에 있던 실제 값이다.
- 이렇게 만들어진 명함 한 장 => 이게 바로 JSON의 '객체(Object)' {}다. DB 테이블의 데이터 한 줄(Row)을 의미한다.
그럼 가게가 여러 개일 때는 어떻게 할까? 간단하다. 가게마다 명함을 한 장씩 만든 다음, 그것들을 '명함첩'에 차곡차곡 담아서 한 번에 보내주면 된다.
[
{
"id": 1,
"name": "Pizza Heaven",
"rating": 4.7,
"location": "Busan"
},
{
"id": 2,
"name": "Burger World",
"rating": 4.5,
"location": "Seoul"
}
]
이 '명함첩' 역할이 바로 배열(Array) []이다.
정리하자면, JSON은 서버와 클라이언트가 데이터를 주고받을 때 사용하는 일종의 '표준 양식'이다. 데이터베이스의 표 데이터를, 컴퓨터도 사람도 이해하기 쉬운 명함(객체)과 명함첩(배열) 형태로 변환해서 소통하는 방식이었던 것이다.