본문으로 건너뛰기
jsonbeautifiers
한국어
V8 Node v24.15.0, V8 13.6.233.17에서 파서를 실행해 확인했습니다.

Bad escaped character in JSON at position N (line L column C)

JSON이 허용하는 이스케이프 시퀀스는 정확히 아홉 개입니다. \" \\ \/ \b \f \n \r \t 그리고 \uXXXX. 백슬래시 뒤에 그 밖의 것이 오면 오류입니다. 원인은 거의 언제나 윈도우 경로 속의 홑 백슬래시입니다. \U, \P, \D는 이스케이프가 아니기 때문입니다.

JSON을 붙여넣고 어디서 깨지는지 정확히 확인하기

입력

붙여 넣은 것은 여러분의 브라우저를 떠나지 않습니다. connect-src 허용 목록 덕분에 이는 약속이 아니라 브라우저가 강제하는 보장입니다. 직접 확인하기

실제 원인

어느 쪽이 답인 경우가 많은지, 그 순서대로 정리했습니다.

  1. 01 백슬래시가 하나뿐인 윈도우 파일 경로

    압도적으로 흔한 원인입니다. JSON 문자열 안의 백슬래시는 모두 두 번 겹쳐 써야 합니다. 윈도우에서도 대부분의 맥락에서 슬래시가 통하고, 그러면 문제 자체가 사라집니다.

    깨지는 예

    { "path": "C:\Users\priya\config.json" }

    되는 예

    { "path": "C:\\Users\\priya\\config.json" }
  2. 02 다른 언어에서 빌려 온 16진 이스케이프

    JSON에는 \x 이스케이프가 없습니다. C, Python, JavaScript는 모두 문자 A를 \x41로 쓸 수 있지만, JSON은 \u0041을 요구합니다.

    깨지는 예

    { "c": "\x41" }

    되는 예

    { "c": "\u0041" }
  3. 03 문자열에 붙여 넣은 정규식

    \d, \s, \w 같은 패턴은 JSON의 이스케이프가 아닙니다. JSON 문자열에 넣기 전에 패턴 속 백슬래시를 모두 두 번 겹쳐 쓰세요.

    깨지는 예

    { "pattern": "^\d{3}-\d{4}$" }

    되는 예

    { "pattern": "^\\d{3}-\\d{4}$" }
  4. 04 작은따옴표 이스케이프

    \' 는 JavaScript와 JSON5에서는 유효하지만 JSON에서는 아닙니다. 큰따옴표로 감싼 문자열 안에서 아포스트로피는 이스케이프가 전혀 필요 없습니다.

다른 런타임에서의 같은 실수

밑바탕의 문제는 똑같고, 다른 건 문구뿐입니다. 동료가 이 중 하나를 들고 왔다면, 그 사람이 보고 있는 건 여러분이 보는 것과 같습니다.

Python Invalid \escape: line 1 column 9 (char 8)

자주 묻는 질문

파이썬 문자열은 맞아 보이는데 왜 실패하나요?
백슬래시가 두 번 소비되기 때문입니다. 파이썬 문자열 리터럴이 한 번, JSON이 또 한 번 가져갑니다. 리터럴에는 raw 문자열을 쓰거나, JSON을 손으로 쓰지 말고 객체를 만든 뒤 json.dumps를 부르세요.
\/ 가 정말 허용되나요?
허용됩니다. JSON에서 슬래시 이스케이프는 선택이고 두 표기 모두 같은 문자를 뜻합니다. 이것이 있는 이유는 HTML의 script 태그 안에 JSON을 안전하게 넣을 수 있게 하기 위해서인데, 거기서는 </ 라는 배열이 요소를 끝내 버립니다.

지금 고치기

위의 도구에 페이로드를 붙여넣거나, 이 일을 위해 만들어진 도구로 바로 가세요.

문자열을 올바르게 이스케이프