2026. 03. 14
JSON이란 무엇인가 — 문법부터 실무 활용까지
JSON 기본 문법, 자주 발생하는 오류 5가지, API 응답 디버깅 방법. JSON vs XML·YAML 비교와 jq 명령어 활용까지.
JSON을 배워야 하는 이유
웹 개발, 앱 개발, 데이터 분석, 자동화 스크립트 — 어떤 분야든 외부 서비스와 데이터를 주고받는 순간 JSON을 만나게 된다. 카카오 API, 네이버 API, OpenAI API 모두 JSON으로 데이터를 주고받는다.
JSON의 기본 구조
JSON(JavaScript Object Notation)은 데이터를 텍스트로 표현하는 형식이다. 두 가지 기본 구조로 이루어진다.
객체(Object): 중괄호 {} 안에 키-값 쌍을 담는다. 키는 반드시 큰따옴표로 감싼다.
{
"name": "홍길동",
"age": 30,
"active": true
}
배열(Array): 대괄호 [] 안에 순서 있는 값들을 담는다.
["서울", "부산", "인천"]
지원하는 데이터 타입: 문자열(반드시 큰따옴표), 숫자, 불리언(true/false), null, 객체, 배열. undefined, 함수, 날짜 타입은 JSON에 없다.
자주 발생하는 JSON 오류 5가지
1. 후행 쉼표(Trailing Comma)
마지막 항목 뒤에 쉼표를 붙이면 오류가 발생한다. JavaScript 코드에서는 허용되지만 JSON 스펙에서는 허용되지 않는다.
2. 작은따옴표 사용
JSON은 큰따옴표만 허용한다. Python의 딕셔너리를 JSON으로 착각하거나 JavaScript 코드를 그대로 붙여넣을 때 발생한다.
3. 주석 포함
JSON은 주석을 지원하지 않는다. 설정 파일에 주석이 필요하다면 JSONC 형식이나 YAML을 쓰는 것이 낫다.
4. undefined 값 사용
JavaScript에서 객체를 JSON.stringify()할 때 값이 undefined인 키는 자동으로 제외된다.
5. 숫자 표현 오류
16진수(0xFF), 8진수(077), Infinity, NaN은 유효하지 않다.
JSON vs XML vs YAML
JSON은 XML보다 간결하고 API 통신에서 표준으로 자리 잡았다. YAML은 주석 지원과 가독성이 좋아 GitHub Actions, Docker Compose, Kubernetes 설정 파일에 주로 쓰인다. XML은 레거시 시스템과 일부 엔터프라이즈 API에서 여전히 쓰인다.
jq로 커맨드라인에서 JSON 처리하기
# API 응답을 예쁘게 출력
curl -s https://api.example.com/users | jq '.'
# 특정 필드만 추출
cat data.json | jq '.user.name'
# 배열에서 특정 조건 필터링
cat users.json | jq '.[] | select(.age > 30)'
macOS에서는 brew install jq, Ubuntu/Debian에서는 apt install jq로 설치한다.