홈 / 활용 가이드 / JSON 오류 자주 나는 원인 8가지와 해결법
쓸모칸 활용 가이드

JSON 오류 자주 나는 원인 8가지와 해결법

Unexpected token, 끝 쉼표, 작은따옴표, 주석, NaN, 16자리 이상 큰 정수 정밀도 손실, BOM, 중복 키까지 JSON 파싱 오류의 원인과 해결법을 예시 코드로 정리합니다.

작성·검토: 쓸모칸 운영자게시 2026-10-12 · 최종 수정 2026-10-12 · 읽는 시간 약 4분
핵심 요약
  • JSON은 자바스크립트 객체 문법보다 훨씬 엄격합니다. 끝 쉼표, 작은따옴표, 주석을 허용하지 않습니다.
  • 오류 메시지의 위치(position·line·column)는 실제 실수보다 한두 글자 뒤를 가리키는 경우가 많습니다.
  • 2^53(약 9천조)을 넘는 정수는 자바스크립트에서 정밀도가 깨지므로 ID는 문자열로 주고받는 것이 안전합니다.

API 응답이나 설정 파일을 붙여 넣었더니 Unexpected token이나 Expected property name 오류가 나는 경우, 원인은 대부분 아래 여덟 가지 중 하나입니다. 오류 위치 근처를 보면서 하나씩 확인해 보세요.

1. 마지막 항목 뒤 쉼표

{"a": 1, "b": 2,}처럼 마지막 속성이나 배열 항목 뒤의 쉼표는 자바스크립트에서는 허용되지만 JSON에서는 오류입니다. 코드에서 복사한 객체에서 가장 흔히 생깁니다.

2. 작은따옴표

JSON의 문자열과 속성 이름은 반드시 큰따옴표(")를 써야 합니다. {'name': 'kim'}은 오류이고 {"name": "kim"}이 맞습니다. 파이썬 딕셔너리를 print로 출력한 결과를 그대로 붙여 넣으면 이 문제가 생깁니다. 파이썬에서는 json.dumps()로 출력하세요.

3. 따옴표 없는 속성 이름

{name: "kim"}은 자바스크립트 객체 문법이지 JSON이 아닙니다. 모든 키를 큰따옴표로 감싸야 합니다.

4. 주석

JSON 표준에는 주석이 없습니다. //나 /* */가 들어간 설정 파일은 JSONC나 JSON5 같은 확장 형식이며, 일반 JSON 파서는 오류를 냅니다. 설정 파일이라면 해당 프로그램이 JSONC를 지원하는지 확인하세요.

5. undefined, NaN, Infinity

JSON이 표현할 수 있는 값은 문자열, 숫자, true, false, null, 객체, 배열뿐입니다. NaN, Infinity, undefined는 쓸 수 없습니다. 자바스크립트의 JSON.stringify는 NaN을 null로 바꾸고 undefined 속성은 빼버리므로 데이터가 조용히 사라질 수 있습니다.

6. 큰 정수의 정밀도 손실

JSON 문법 자체는 큰 숫자를 허용하지만, 자바스크립트는 숫자를 64비트 부동소수점으로 다루기 때문에 9,007,199,254,740,991(2^53 − 1)보다 큰 정수는 정확히 표현하지 못합니다. 예를 들어 {"id": 12345678901234567890}을 파싱하면 끝자리가 바뀝니다. 주문번호나 SNS 게시물 ID처럼 큰 정수는 서버에서 문자열로 보내는 것이 안전합니다. 포맷터로 정렬·압축할 때도 이런 값은 원본과 비교해야 합니다.

7. 보이지 않는 문자(BOM, 줄바꿈)

윈도우 메모장 등으로 저장한 파일 맨 앞에 BOM(EF BB BF)이 붙어 있으면 일부 파서가 첫 글자에서 오류를 냅니다. 문자열 안에 실제 줄바꿈이나 탭이 들어가도 오류이므로 \n, \t로 이스케이프해야 합니다.

8. 중복 키

{"a": 1, "a": 2}는 대부분의 파서에서 오류 없이 마지막 값(2)만 남깁니다. 오류가 나지 않아 더 찾기 어렵습니다. 설정이 적용되지 않는다면 같은 키가 두 번 있는지 검색해 보세요.

오류 위치 읽는 법

오류 메시지 예의미확인할 곳
Unexpected token } in JSON닫는 괄호 앞에 값이 와야 함바로 앞의 끝 쉼표
Unexpected token '작은따옴표 사용문자열과 키의 따옴표
Expected property name키 자리에 이상한 문자따옴표 없는 키, 주석, 끝 쉼표
Unexpected end of JSON input데이터가 중간에 끊김닫는 괄호 누락, 응답 잘림
Bad control character in string문자열 안의 실제 줄바꿈·탭\n 이스케이프

파서는 문제가 '확정되는' 지점에서 오류를 보고하므로 표시된 위치보다 조금 앞에서 원인을 찾는 것이 빠릅니다.

자주 묻는 질문

API 응답이 HTML인데 JSON 오류가 나요.

"Unexpected token <"는 응답이 JSON이 아니라 HTML(대개 오류 페이지나 로그인 페이지)이라는 뜻입니다. 응답 상태 코드와 URL을 먼저 확인하세요.

민감한 토큰이 들어간 JSON을 검사해도 되나요?

서버로 전송하는 온라인 검사기에는 붙여 넣지 마세요. 쓸모칸 JSON 포맷터는 브라우저 안에서만 처리합니다.

참고한 공식 자료

이 글은 일반적인 기준을 설명하는 정보이며 개인별 법률·세무 판단을 대신하지 않습니다. 중요한 결정 전에는 본문에 적은 공식 기관 자료나 전문가 상담으로 확인하세요. 내용 오류는 문의 페이지로 알려주시면 확인 후 수정합니다.

직접 계산해 보기

본문의 예시를 내 조건으로 바꿔 확인해 보세요.

JSON 포맷터·검증기 열기