JSON을 문자열 리터럴로 이스케이프하기 (그리고 이중 인코드된 JSON 디코드)
JSON을 stringify하면 내부 따옴표와 특수 문자가 이스케이프된 채 큰따옴표로 감싸져, 다른 곳에 안전하게 내장할 수 있는 JSON 문자열 리터럴이 됩니다.
「리터럴로 stringify한다」는 무슨 뜻인가
JSON 문자열을 JSON.stringify에 통과시키면 큰따옴표로 감싸지고 내부의 따옴표와 백슬래시가 이스케이프되어, 어디든 안전하게 끼워 넣을 수 있는 하나의 문자열 값이 나옵니다.
왜 필요한가
JSON을 다른 JSON 필드 안에 끼워 넣거나, 문자열 유형 DB 컬럼에 저장하거나, 환경 변수나 URL 파라미터로 넘기려면 이스케이프된 문자열 리터럴이 필요합니다.
이스케이프 규칙
큰따옴표는 백슬래시로 이스케이프, 백슬래시는 두 개로, 줄바꿈・탭 같은 제어 문자는 두 글자 이스케이프 시퀀스가 됩니다. 결과에는 가공되지 않은 줄바꿈이 없습니다.
이중 인코딩된 JSON 디코딩
이스케이프된 따옴표로 시작하고 그 시퀀스를 포함하는 문자열을 받았다면, 그것은 stringify된 것입니다. 한 번 파싱해서 내부 JSON 문자열을 얻고, 다시 한 번 파싱해 실제 값을 얻으세요.
이중 인코딩이 등장하는 곳
컨텍스트 객체를 직렬화하는 로깅 프레임워크, JSON 본문을 'body' 필드 안에 감싸는 웹훅, JSON-as-string 봉투를 보내는 메시지 큐, text나 varchar 형 DB 컬럼이 가장 흔한 출처입니다. 시작의 따옴표와 짝수 개의 백슬래시가 신호입니다.
로그 속 임베드된 JSON 다루기
구조화 로거는 객체를 stringify해서 각 로그 라인을 단일 값으로 만들곤 합니다. 내용을 보려면 라인을 로그 뷰어에서 꺼내, JSON.parse로 이스케이프를 풀고, 회복한 JSON을 포매팅하세요. 여러 줄의 JSON 객체를 grep하는 것은 피하고 — 한 줄로 stringify된 JSON이 훨씬 검색하기 좋습니다.
왕복용 도구
브라우저 콘솔: JSON.parse(line)으로 내부 JSON을 얻고 JSON.stringify(...,null,2)로 예쁘게 출력. Node CLI: 'node -e "console.log(JSON.parse(process.argv[1]))" "<line>"'이 두 단계를 한 번에 처리. 이 사이트의 JSON Stringify 도구는 임의 깊이의 중첩을 한 번의 클릭으로 처리합니다.
JSON 수리 가이드
토픽 허브
- JSON Parse Errors: Read the Message, Jump to the Fix
- Fix Invalid JSON: From 'What's Wrong' to a Clean File
- JSON Formatter, Validator, Viewer: Pick the Right Tool
- Repair LLM JSON Output: Handling Almost-JSON from AI
- Privacy: JSON Tools That Don't Leave Your Browser
- JSON Interop: YAML, CSV, XML, JWT, Schema
구체적인 가이드
- Base64 문자열 디코드 방법 (그리고 JWT 페이로드)
- URL 인코딩: 쿼리 파라미터와 경로를 퍼센트 인코드하기
- YAML을 JSON으로 변환하기 (그리고 들여쓰기 오류 피하기)
- JSON을 CSV로 변환: 객체 배열을 펴기
- JSON을 XML로 변환: 루트, 속성, 배열
- JSON의 후행 쉼표 고치기
- JSON의 작은따옴표 고치기
- JSON의 따옴표 없는 키 고치기
- LLM이 만든 JSON 고치기
- JSON 파싱 오류 “Expected Property Name” 고치기
- JSON vs JavaScript 객체 리터럴
- API 요청 전에 JSON 검증하기
- JSON 포맷터 vs JSON Repair
- JSON Unexpected Token 오류 고치기
- JSON에서 JavaScript 객체 변환기