ERROR - Updated 2026-05-14

JSON unexpected end of input

JSON unexpected end of input 오류가 닫히지 않은 괄호, 문자열, 잘린 API 응답, 빈 응답 때문에 나는지 확인하는 방법.

Open JSON Error Doctor

JSON unexpected end of input은 JSON 파서가 아직 더 읽어야 할 값이 있다고 판단했는데 문자열이 끝났다는 뜻입니다. 보통 닫히지 않은 중괄호, 대괄호, 따옴표가 있거나 API 응답이 중간에 잘렸을 때 발생합니다. 빈 응답을 JSON으로 파싱하는 경우에도 같은 계열의 오류가 날 수 있으므로 응답 길이와 status code를 함께 확인해야 합니다.

증상

  • Unexpected end of JSON input 또는 JSON unexpected end of input 메시지가 표시됩니다.
  • JSON 파일 끝부분에서 오류가 납니다.
  • API 응답이 가끔만 실패하고 재시도하면 성공합니다.
  • 204 No Content 응답에서 response.json()을 호출할 때 실패합니다.

원인

JSON 구조가 끝까지 완성되지 않았거나, 파싱 대상 문자열이 비어 있거나, 네트워크/서버 문제로 응답이 중간에 끊겼을 수 있습니다.

원인확인 방법
닫히지 않은 객체{ "name": "Alice"마지막 중괄호 확인
닫히지 않은 배열[1, 2, 3마지막 대괄호 확인
닫히지 않은 문자열{ "name": "Alice }따옴표 짝 확인
빈 응답empty bodystatus code와 body length 확인
잘린 응답절반만 내려온 JSONNetwork 탭 response 확인

바로 해결 방법

  1. JSON Error Doctor에 실제 JSON 문자열을 붙여넣습니다.
  2. 파일 끝부분의 괄호와 따옴표가 모두 닫혔는지 확인합니다.
  3. API 응답이면 body가 비어 있는지, 중간에 잘렸는지 확인합니다.
  4. 204 No Content나 빈 문자열은 JSON으로 파싱하지 않도록 분기합니다.
  5. 서버 로그에서 응답 생성 중 예외가 났는지 확인합니다.

FixData 도구로 확인하기

JSON Error Doctor는 닫히지 않은 JSON 구조를 찾는 데 도움이 됩니다. 오류 위치가 파일 끝으로 잡힌다면 마지막 줄만 보지 말고, 그보다 앞에서 열린 {, [, "가 닫혔는지 확인하세요.

API 응답 문제라면 도구에 넣기 전에 Network 탭의 실제 response body를 복사해야 합니다. 코드에서 만든 객체나 콘솔 출력만 보면 빈 응답 문제를 놓칠 수 있습니다.

수동 해결 방법

닫히지 않은 괄호 찾기

잘못된 JSON:

{
  "user": {
    "name": "Alice"
}

올바른 JSON:

{
  "user": {
    "name": "Alice"
  }
}

중첩된 구조에서는 들여쓰기를 맞추면 빠르게 발견할 수 있습니다.

빈 응답 파싱하지 않기

삭제 API나 저장 API가 204 No Content를 반환한다면 body가 없을 수 있습니다.

const response = await fetch("/api/item/1", { method: "DELETE" });
if (response.status !== 204) {
  const data = await response.json();
}

잘린 응답 확인하기

큰 JSON을 내려받는 중 서버가 타임아웃되거나 프록시가 연결을 끊으면 응답이 중간에 끝날 수 있습니다. 이 경우 JSON 문법만 고쳐서는 해결되지 않습니다.

예제

문제 JSON:

{
  "items": [
    { "id": 1, "name": "A" },
    { "id": 2, "name": "B" }

수정한 JSON:

{
  "items": [
    { "id": 1, "name": "A" },
    { "id": 2, "name": "B" }
  ]
}

자주 하는 실수

  • 파일 끝에서 오류가 난다고 마지막 줄만 확인합니다.
  • 빈 응답을 성공 JSON처럼 처리합니다.
  • 서버가 HTML 오류 페이지를 보내는 상황과 잘린 JSON을 구분하지 않습니다.
  • 로그에는 객체로 정상 출력되는데 실제 응답 문자열은 다른 경우를 놓칩니다.

관련 도구

  • JSON Error Doctor: 닫히지 않은 JSON 구조와 빈 입력 문제를 확인할 수 있습니다.

관련 글

업데이트 날짜

2026-05-14