JSON 문법의 공백은 네 종류입니다
RFC 8259의 문법 공백은 U+0020, 탭 U+0009, 줄바꿈 U+000A, 캐리지 리턴 U+000D입니다. U+00A0인 NBSP는 여기에 포함되지 않습니다. 아래 JavaScript 코드에서 콜론 뒤에 보통 공백을 넣으면 Moyoutil formatJSON은 통과시키지만 NBSP를 넣으면 오류를 냅니다. 코드의 \u 표기는 실행 시 해당 문자를 만드는 JavaScript 문자열 이스케이프입니다.
formatJSON('{"n":\u00201}'); // accepted
formatJSON('{"n":\u00A01}'); // throws문자열 안의 NBSP는 데이터입니다
큰따옴표 안의 NBSP는 이 예제에서 유효한 문자열 문자입니다. Moyoutil 정리와 압축은 이를 보존합니다. 문자열 전체에서 NBSP를 보통 공백으로 치환하면 A와 B 사이의 실제 코드 포인트가 160에서 32로 바뀝니다. 문법 오류를 고친다고 데이터 안의 공백까지 무조건 바꾸지 마세요.
const source = '{"text":"A\u00A0B"}';
JSON.parse(formatJSON(source, 0).output).text.codePointAt(1) // 160
JSON.parse(source.replaceAll("\u00A0", " ")).text.codePointAt(1) // 32Moyoutil JSON 도구의 오류 줄·열과 문제 위치로 이동을 사용해 주변 문자를 확인하세요. 원본을 보관하고 문자열 밖의 잘못된 공백을 의도한 문법 공백으로 다시 입력한 뒤 검증합니다. 이 도구에는 NBSP 전용 탐지나 자동 교정 기능이 없습니다. 검증 통과는 수신 API의 스키마 검사까지 통과했다는 뜻이 아닙니다.
자주 묻는 질문
압축하면 잘못된 공백도 자동으로 고치나요?
아닙니다. formatJSON은 출력 전에 문법을 검사하므로 문자열 밖 NBSP가 있는 입력은 압축도 거부합니다. 문자열 안의 NBSP는 정리·압축 후에도 그대로 남습니다.