JSON이란? 쉬운 설명 (그리고 흔한 오류 고치는 법)
업데이트 2026-07-06
JSON은 현대 소프트웨어 어디에나 있습니다 — 설정 파일, API 응답, 데이터베이스, 설정값이 모두 JSON에 기댑니다. 그런데 쉼표 하나가 잘못 들어가면 파일 전체가 깨지고 알쏭달쏭한 "Unexpected token" 오류만 남습니다. 이 가이드는 JSON이 무엇인지 쉬운 말로, 문법이 실제로 어떻게 동작하는지, 가장 자주 마주치는 오류를 진단하고 고치는 법을 설명합니다.
JSON이란 무엇인가
JSON은 JavaScript Object Notation의 약자입니다. 구조화된 데이터를 저장하고 교환하기 위한 가볍고 텍스트 기반인 포맷입니다. 이름과 달리 JavaScript에 묶여 있지 않습니다 — 사실상 모든 프로그래밍 언어가 읽고 쓸 수 있으며, 바로 그래서 웹 API의 기본 언어가 됐습니다.
JSON의 핵심은 사람과 기계 모두 읽을 수 있다는 점입니다. 데이터를 몇 가지 단순한 구성 요소의 조합으로 표현합니다:
- 객체(Object) — 중괄호
{ }로 감싼 키/값 쌍의 모음. - 배열(Array) — 대괄호
[ ]로 감싼 순서 있는 목록. - 값(Value) — 문자열, 숫자,
true,false,null, 객체, 또는 배열.
작지만 완전한 예입니다:
{
"name": "Ada Lovelace",
"active": true,
"age": 36,
"skills": ["math", "logic"],
"address": {
"city": "London",
"postcode": null
}
}사람들이 걸려 넘어지는 규칙
JSON은 JavaScript 객체와 매우 비슷하게 생겼고, 그 유사성이 대부분 실수의 원인입니다 — JSON은 더 엄격합니다. 이 규칙들을 기억하면 대다수 오류를 피할 수 있습니다:
1. 키와 문자열에는 큰따옴표가 필요
모든 키는 큰따옴표로 감싼 문자열이어야 하고, 모든 텍스트 값도 큰따옴표를 써야 합니다. 작은따옴표는 JavaScript에서는 괜찮아도 유효한 JSON이 아닙니다.
// 잘못됨
{ 'name': 'Ada' }
// 올바름
{ "name": "Ada" }2. 후행 쉼표 금지
객체나 배열의 마지막 항목 뒤에 쉼표를 남길 수 없습니다. 많은 에디터와 언어가 다른 곳에서는 이를 허용하기 때문에, 이것이 가장 흔한 JSON 오류입니다.
// 잘못됨 — 마지막 값 뒤에 쉼표
{ "a": 1, "b": 2, }
// 올바름
{ "a": 1, "b": 2 }3. 주석 금지
표준 JSON에는 주석 문법이 없습니다. //로 시작하는 줄이나 /* */로 감싼 블록은 파싱 오류를 냅니다. 주석이 필요하다면 JSON5나 YAML 같은 포맷이 허용합니다 — 그쪽이 더 맞으면 YAML 포매터를 참고하세요.
4. 숫자는 단순하게
숫자는 따옴표 없이, 선행 0이나 후행 소수점 없이 씁니다. 01, 1., .5는 모두 잘못됐습니다; 1, 1.0, 0.5로 쓰세요.
흔한 오류와 고치는 법
파서가 JSON을 거부할 때 보통 줄과 열 위치를 알려줍니다. 그 위치는 파서가 포기한 지점을 가리키는데, 대개 진짜 실수 바로 뒤입니다. 가장 자주 보게 될 메시지와 실제 의미는 다음과 같습니다:
- "Unexpected token } in JSON" — 거의 항상 닫는 중괄호나 대괄호 앞의 후행 쉼표입니다. 여분의 쉼표를 지우세요.
- "Unexpected string" / "Expected comma" — 두 값 사이 쉼표가 빠졌거나, 쉼표가 와야 할 자리에 줄바꿈을 썼습니다.
- "Unexpected token ' in JSON" — 작은따옴표입니다. 큰따옴표로 바꾸세요.
- "Unexpected end of JSON input" — 대괄호나 중괄호가 닫히지 않았습니다.
{와}를 세어 보세요; 여는 것마다 짝이 되는 닫는 것이 필요합니다. - "Unexpected token o in JSON" — 이미 객체인 것을 JSON 문자열이 아닌데 파싱하려 한 전형적 신호입니다. 파서는 텍스트에만 호출하세요.
정확한 지점을 짚는 가장 빠른 길은, 진행하면서 검증하는 포매터에 텍스트를 넣는 것입니다. 우리 JSON 포매터·검증기는 첫 오류의 정확한 줄과 열을 강조하고, JSON이 유효해지면 예쁘게 출력해 구조적 문제(잘못 놓인 괄호, 한 단계 깊게 중첩된 값)를 한눈에 보이게 합니다. 모든 처리가 브라우저에서 이뤄지므로 비공개·민감한 데이터도 안전하게 확인할 수 있습니다.
포맷 vs. 압축(minify)
JSON을 다룰 때 두 가지 작업이 끊임없이 나옵니다. 포맷팅(beautify 또는 pretty-print라고도 함)은 들여쓰기와 줄바꿈을 넣어 빽빽한 덩어리를 읽기 쉽게 만듭니다 — 디버깅 중에 이상적입니다. 압축(Minify)은 불필요한 공백과 개행을 모두 제거해 가능한 한 작은 출력을 만듭니다 — 네트워크로 보내거나 코드에 넣을 때처럼 크기가 중요할 때 이상적입니다. 어느 쪽이든 데이터는 동일하며, 공백만 바뀝니다.
빠른 체크리스트
JSON을 프로그램에 넘기기 전에 확인하세요:
- 모든 키와 문자열 값이 큰따옴표를 쓴다.
- 후행 쉼표가 없다.
- 주석이 없다.
- 모든 대괄호와 중괄호의 짝이 맞는다.
- 검증기를 오류 없이 통과한다.
이 다섯 가지를 맞추면 JSON은 설계 의도대로 — 지루하고 예측 가능하며 그냥 동작하는 포맷 — 이 됩니다. 그래도 무언가 새어 나오면 JSON 포매터에 붙여 넣고 문제를 곧장 짚어 주게 하세요.
데이터 포맷 & 인코딩 더 보기
데이터 포맷 & 인코딩 가이드 전체 보기 →이 가이드에서 언급한 도구