도구상자FREE ONLINE TOOLS
← 가이드 목록

JSON이란? 문법·구조와 자주 나는 오류 다루기

API 응답, 설정 파일, 데이터 저장… 개발을 하다 보면 JSON을 안 만날 수 없습니다. 구조가 단순해 보이지만 쉼표 하나, 따옴표 하나 때문에 "Unexpected token" 오류로 한참 헤매기도 하죠. 이 글에서 JSON의 기본 문법과 자주 나는 실수, 그리고 빠르게 검증하는 법을 정리합니다.

JSON이 뭐고 왜 쓸까

JSON(JavaScript Object Notation)은 데이터를 사람이 읽을 수 있는 텍스트로 표현하는 형식입니다. 원래 자바스크립트에서 나왔지만 지금은 언어를 가리지 않고 서버↔클라이언트, 프로그램↔프로그램 사이에서 데이터를 주고받는 표준이 됐습니다. 문법이 단순하고, 거의 모든 언어가 파싱 기능을 내장하고 있어서입니다.

기본 문법 — 키·값·자료형

JSON은 키:값 쌍을 중괄호로 묶은 객체와, 값을 대괄호로 나열한 배열로 이뤄집니다.

{ "name": "홍길동", "age": 30, "isMember": true, "tags": ["a", "b"], "address": { "city": "서울" }, "nickname": null }
  • 문자열: 반드시 큰따옴표("..."). 키도 큰따옴표로 감쌉니다.
  • 숫자: 따옴표 없이(30, 3.14). 앞에 0을 붙이거나 따옴표를 쓰면 안 됩니다.
  • 불리언·널: true / false / null (소문자).
  • 객체·배열: 중첩 가능. 값 안에 또 객체·배열이 올 수 있습니다.
JSON 포매터들여쓰기 정렬·문법 검사·압축 포맷·검증 →

자주 나는 오류 3가지

  • 트레일링 콤마: 마지막 항목 뒤 쉼표는 금지입니다. ["a", "b",] ← 마지막 쉼표가 오류. 자바스크립트는 봐주지만 JSON은 안 됩니다.
  • 작은따옴표: 'name' 처럼 작은따옴표를 쓰면 오류. 키·문자열 모두 큰따옴표여야 합니다.
  • 주석: JSON에는 ///* */ 주석이 없습니다. 넣으면 파싱 실패합니다.
팁: "Unexpected token" 오류는 대부분 위 세 가지 + 닫는 괄호 누락입니다. 오류 위치(라인·컬럼)를 알려주는 검사 도구에 붙여넣으면 어디가 문제인지 바로 보입니다.

포맷팅·검증하는 법

한 줄로 뭉쳐진 JSON은 읽기 어렵습니다. 포매터에 붙여넣으면 들여쓰기로 정렬되고, 문법 오류가 있으면 위치를 짚어줍니다. 반대로 전송·저장 시 용량을 줄이려면 공백을 없애는 '압축(minify)'을 씁니다.

  • 정렬(pretty): 사람이 읽고 디버깅할 때.
  • 압축(minify): 네트워크 전송·저장 시 용량 절약.
  • 형식 변환: JSON을 YAML·CSV·타입 정의로 바꿔야 할 때는 변환 도구를 씁니다.
자주 묻는 질문
Q. JSON에서 마지막 항목 뒤에 쉼표를 붙이면 왜 오류가 나나요?

JSON 표준은 객체나 배열의 마지막 항목 뒤에 오는 쉼표(트레일링 콤마)를 허용하지 않습니다. 자바스크립트 코드에서는 허용되지만 순수 JSON에서는 문법 오류가 됩니다. 마지막 항목 뒤 쉼표를 지우면 해결됩니다.

Q. JSON에 주석을 넣을 수 있나요?

순수 JSON 표준에는 주석(//, /* */)이 없습니다. 주석을 넣으면 파싱 오류가 납니다. 설정 파일 등에서 주석이 필요하면 JSONC, JSON5, YAML처럼 주석을 허용하는 형식을 쓰거나, 값으로 설명용 키를 추가하는 방식을 씁니다.

Q. JSON 문자열은 왜 큰따옴표만 써야 하나요?

JSON 표준은 문자열과 키를 모두 큰따옴표(")로 감싸도록 규정합니다. 작은따옴표(')는 허용되지 않습니다. 자바스크립트에서는 작은따옴표가 되지만 JSON으로 주고받을 때는 큰따옴표로 바꿔야 유효합니다.

함께 보면 좋은 도구