JSON이란? 문법·구조와 자주 나는 오류 다루기
API 응답, 설정 파일, 데이터 저장… 개발을 하다 보면 JSON을 안 만날 수 없습니다. 구조가 단순해 보이지만 쉼표 하나, 따옴표 하나 때문에 "Unexpected token" 오류로 한참 헤매기도 하죠. 이 글에서 JSON의 기본 문법과 자주 나는 실수, 그리고 빠르게 검증하는 법을 정리합니다.
JSON이 뭐고 왜 쓸까
JSON(JavaScript Object Notation)은 데이터를 사람이 읽을 수 있는 텍스트로 표현하는 형식입니다. 원래 자바스크립트에서 나왔지만 지금은 언어를 가리지 않고 서버↔클라이언트, 프로그램↔프로그램 사이에서 데이터를 주고받는 표준이 됐습니다. 문법이 단순하고, 거의 모든 언어가 파싱 기능을 내장하고 있어서입니다.
기본 문법 — 키·값·자료형
JSON은 키:값 쌍을 중괄호로 묶은 객체와, 값을 대괄호로 나열한 배열로 이뤄집니다.
- 문자열: 반드시 큰따옴표("..."). 키도 큰따옴표로 감쌉니다.
- 숫자: 따옴표 없이(30, 3.14). 앞에 0을 붙이거나 따옴표를 쓰면 안 됩니다.
- 불리언·널: true / false / null (소문자).
- 객체·배열: 중첩 가능. 값 안에 또 객체·배열이 올 수 있습니다.
자주 나는 오류 3가지
- 트레일링 콤마: 마지막 항목 뒤 쉼표는 금지입니다. ["a", "b",] ← 마지막 쉼표가 오류. 자바스크립트는 봐주지만 JSON은 안 됩니다.
- 작은따옴표: 'name' 처럼 작은따옴표를 쓰면 오류. 키·문자열 모두 큰따옴표여야 합니다.
- 주석: JSON에는 //나 /* */ 주석이 없습니다. 넣으면 파싱 실패합니다.
포맷팅·검증하는 법
한 줄로 뭉쳐진 JSON은 읽기 어렵습니다. 포매터에 붙여넣으면 들여쓰기로 정렬되고, 문법 오류가 있으면 위치를 짚어줍니다. 반대로 전송·저장 시 용량을 줄이려면 공백을 없애는 '압축(minify)'을 씁니다.
- 정렬(pretty): 사람이 읽고 디버깅할 때.
- 압축(minify): 네트워크 전송·저장 시 용량 절약.
- 형식 변환: JSON을 YAML·CSV·타입 정의로 바꿔야 할 때는 변환 도구를 씁니다.
JSON 표준은 객체나 배열의 마지막 항목 뒤에 오는 쉼표(트레일링 콤마)를 허용하지 않습니다. 자바스크립트 코드에서는 허용되지만 순수 JSON에서는 문법 오류가 됩니다. 마지막 항목 뒤 쉼표를 지우면 해결됩니다.
순수 JSON 표준에는 주석(//, /* */)이 없습니다. 주석을 넣으면 파싱 오류가 납니다. 설정 파일 등에서 주석이 필요하면 JSONC, JSON5, YAML처럼 주석을 허용하는 형식을 쓰거나, 값으로 설명용 키를 추가하는 방식을 씁니다.
JSON 표준은 문자열과 키를 모두 큰따옴표(")로 감싸도록 규정합니다. 작은따옴표(')는 허용되지 않습니다. 자바스크립트에서는 작은따옴표가 되지만 JSON으로 주고받을 때는 큰따옴표로 바꿔야 유효합니다.