데이터

JSON 문법 오류 해결 가이드: 가장 흔한 실수 7가지와 정리하는 법

API 응답, 설정 파일, 로그까지 JSON은 개발자가 가장 많이 읽는 데이터 형식입니다. 그런데 쉼표 하나, 따옴표 하나 때문에 'Unexpected token' 오류가 나곤 합니다. 원인을 빠르게 찾는 법을 정리했습니다.

JSON의 기본 규칙

JSON(JavaScript Object Notation)은 RFC 8259와 ECMA-404로 표준화된 텍스트 데이터 형식입니다. 자바스크립트에서 왔지만 이제는 거의 모든 언어가 지원합니다. 값의 종류는 문자열, 숫자, 불리언(true/false), null, 배열, 객체 여섯 가지뿐입니다.

객체는 중괄호 안에 "키": 값 쌍을 쉼표로 나열하고, 배열은 대괄호 안에 값을 쉼표로 나열합니다. 키는 반드시 큰따옴표로 감싼 문자열이어야 합니다. 규칙이 단순한 만큼 엄격해서, 자바스크립트 코드에서는 허용되는 표기도 JSON에서는 오류가 됩니다.

{
  "id": 1024,
  "name": "AIBIZAP",
  "active": true,
  "tags": ["tools", "guides"],
  "owner": null
}

파싱 오류를 일으키는 흔한 실수 7가지

오류 메시지에 나오는 위치(줄, 열 또는 position) 바로 앞을 보면 대부분 이 중 하나가 원인입니다. JSON 포맷터에 붙여 넣으면 들여쓰기가 정리되면서 어느 줄이 문제인지 눈으로 찾기 쉬워집니다.

  • 마지막 항목 뒤 쉼표: [1, 2, 3,] 처럼 끝에 쉼표가 남으면 오류입니다.
  • 작은따옴표: 'name' 대신 반드시 "name"을 써야 합니다.
  • 따옴표 없는 키: {name: "a"}는 자바스크립트 객체일 뿐 JSON이 아닙니다.
  • 주석: JSON 표준에는 // 나 /* */ 주석이 없습니다.
  • 이스케이프 누락: 문자열 안의 큰따옴표는 \", 역슬래시는 \\, 줄바꿈은 \n으로 써야 합니다. 윈도우 경로 C:\Users를 그대로 넣으면 깨집니다.
  • 특수 값: NaN, Infinity, undefined는 JSON에 없습니다. 값이 없으면 null을 씁니다.
  • BOM과 보이지 않는 문자: 파일 맨 앞의 UTF-8 BOM이나 복사 과정에서 섞인 줄바꿈 없는 공백(NBSP) 때문에 첫 글자부터 오류가 나기도 합니다.

큰 숫자와 소수점 주의

JSON 표준은 숫자의 크기를 제한하지 않지만, 자바스크립트는 모든 숫자를 64비트 부동소수점으로 처리합니다. 그래서 2^53(9,007,199,254,740,992)보다 큰 정수는 정확하게 표현되지 않습니다. 트위터 ID나 일부 주문 번호처럼 긴 정수를 숫자로 보내면 브라우저에서 마지막 자릿수가 바뀌는 사고가 납니다.

이런 값은 처음부터 "id": "1234567890123456789"처럼 문자열로 주고받는 것이 안전합니다. 금액도 마찬가지로 0.1 + 0.2가 0.30000000000000004가 되는 부동소수점 오차가 있으므로, 원 단위 정수나 문자열로 다루는 경우가 많습니다.

JSON에는 날짜 타입이 없다

JSON에는 날짜 형식이 따로 없어서 보통 두 가지 방법 중 하나를 씁니다. ISO 8601 문자열("2026-10-28T09:00:00Z") 또는 유닉스 타임스탬프 숫자(1793178000)입니다. 사람이 읽기 쉽고 시간대가 명확한 ISO 8601에 끝의 Z(UTC)나 +09:00 같은 오프셋을 붙이는 방식을 권장합니다.

시간대 표시 없이 "2026-10-28 09:00"처럼 보내면 받는 쪽이 서버 시간대로 해석할지 사용자 시간대로 해석할지 알 수 없어 9시간 차이 같은 버그가 생깁니다.

정리(Pretty print)와 압축(Minify)

같은 JSON이라도 들여쓰기와 줄바꿈을 넣으면 사람이 읽기 좋고, 공백을 모두 빼면 전송량이 줄어듭니다. 의미는 완전히 같으므로 디버깅할 때는 정리하고, 네트워크로 보내거나 저장할 때는 압축하면 됩니다.

설정 파일처럼 사람이 자주 고치는 JSON은 정리된 형태로 버전 관리에 올리는 것이 변경 이력을 보기 편합니다. 키 순서는 의미가 없지만, 정렬해 두면 비교(diff)할 때 훨씬 수월합니다.

JSON을 코드와 테이블로 바꾸기

API 응답 샘플을 받으면 그 구조에 맞는 C#, 자바, 파이썬, 타입스크립트 클래스를 만들어야 할 때가 많습니다. 필드가 수십 개라면 손으로 옮기다 오타가 나기 쉽습니다. JSON 클래스 생성기는 샘플에서 타입을 추론해 모델 코드를 만들어 줍니다.

같은 샘플을 데이터베이스에 저장해야 한다면 JSON DDL 생성기로 CREATE TABLE 문의 초안을 만들 수 있습니다. 다만 자동 추론 결과는 샘플에 보이는 값만 근거로 하므로, null이 될 수 있는 필드나 문자열 길이, 기본 키는 직접 검토해 확정하는 것이 좋습니다.

이 도구로 직접 해 보세요

다른 가이드

전체 가이드