본문으로 건너뛰기
jsonbeautifiers
한국어
Python CPython 3.14.3에서 파서를 실행해 확인했습니다.

Invalid \escape: line L column C (char N)

JSON 문자열 안의 백슬래시 뒤에 JSON의 아홉 가지 이스케이프 중 어느 것도 아닌 문자가 옵니다. 파이썬 코드에서는 혼란이 두 배가 됩니다. 파이썬 문자열 리터럴도 백슬래시를 소비하기 때문에, 파서에 도착하는 텍스트가 여러분이 입력한 것과 다릅니다.

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

입력

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

실제 원인

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

  1. 01 윈도우 경로

    백슬래시는 JSON을 위해 한 번 겹쳐야 하고, raw가 아닌 파이썬 리터럴 안에서는 파이썬을 위해 또 한 번 겹쳐야 합니다. raw 문자열을 쓰면 그중 한 겹이 사라집니다.

    깨지는 예

    json.loads('{"p": "C:\Users"}')

    되는 예

    json.loads(r'{"p": "C:\\Users"}')
  2. 02 정규식

    \d, \s, \w는 JSON의 이스케이프가 아닙니다. 백슬래시를 모두 두 번 겹쳐 쓰세요.

  3. 03 \x 16진 이스케이프

    JSON에는 \uXXXX뿐입니다. \x41은 \u0041이 되어야 합니다.

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

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

JavaScript (V8) Bad escaped character in JSON at position 9 (line 1 column 10)

자주 묻는 질문

같은 문자열이 어디서는 되고 어디서는 안 되는 이유는?
문자열 리터럴을 몇 번 통과하느냐에 달렸습니다. .json 파일에 바로 쓴 경로라면 겹치기가 한 단계면 됩니다. 같은 경로가 파이썬 리터럴 안에 있고 그게 다시 셸 인자 안에 있다면 세 단계가 필요할 수도 있습니다.
잘못된 이스케이프 시퀀스에 대한 SyntaxWarning과 같은 건가요?
다릅니다. 그리고 헷갈리기 쉽습니다. 그 경고는 JSON이 끼어들기 전 단계에서 파이썬이 여러분의 소스 코드를 두고 하는 불평입니다. 이 오류는 JSON 파서가 내는 것이고 문자열의 내용에 관한 것입니다.

지금 고치기

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

올바르게 이스케이프하기