문자열은 spec 에서 가장 의견 강한 부분
JSON 문자열은 항상 큰따옴표로 감쌈. 작은따옴표는 허용 안 됨 — spec 이 명확. native 문자열 리터럴에 둘 다 작동하는 JavaScript 나 Python 에서 온 사람 다 여기 걸려.
Escape 시퀀스
\"— literal 큰따옴표\\— literal 백슬래시\/— 슬래시 (옵션 escape, 임베디드 HTML 에 가끔 유용)\b \f \n \r \t— 제어 문자\uXXXX— 16 진수 Unicode 코드 포인트 (4 자리, BMP only; 비-BMP 는 surrogate pair)
JSON 문자열에 raw 로 못 넣는 것
U+0000 ~ U+001F 제어 문자는 escape 해야 해 (벨은 \u0007 등). 문자열 안의 literal newline 은 syntax error. 탭도 마찬가지 — \t 써. 에러 메시지는 보통 실제 깨진 줄이 아니라 그 다음 줄에 'unexpected token' 이라고 나와.
원칙: JSON 문자열은 인코딩 되지 quoted 되는 게 아니야. quoting 은 문자를 숨기고; 인코딩은 드러내. 소스의
\n 은 두 글자, 파싱된 값은 한 글자 (newline). 까다로운 문자열 내용 쓰기 전 '파서가 뭘 보지?' 항상 생각해.