JSON 포맷터·검사기
JSON을 보기 좋게 정렬하고 문법 오류의 위치를 짚어줍니다. 압축(minify)과 트리 보기도 지원합니다.
입력한 내용은 브라우저 안에서만 처리되며 서버로 전송되지 않습니다.
입력한 내용은 어디로도 가지 않습니다
이 도구는 브라우저 안에서만 JSON을 파싱합니다. 네트워크 요청이 전혀 발생하지 않으므로, API 응답이나 설정 파일처럼 토큰과 개인정보가 섞인 데이터도 안심하고 붙여넣을 수 있습니다.
JSON에서 자주 틀리는 문법
JSON은 자바스크립트 객체 리터럴과 비슷하게 생겼지만 훨씬 엄격합니다. 자바스크립트에서 되는 문법이 JSON에서는 오류인 경우가 많습니다.
후행 쉼표는 허용되지 않습니다
{
"a": 1,
"b": 2, ← 이 쉼표가 오류
}
자바스크립트 객체 리터럴에서는 마지막 쉼표가 허용되고, 오히려 diff를 깔끔하게 만들어 권장되기도 합니다. 하지만 JSON 표준(RFC 8259)은 이를 금지합니다.
큰따옴표만 됩니다
{ 'name': 'value' } ← 오류
{ "name": "value" } ← 정상
키와 문자열 값 모두 큰따옴표를 써야 합니다. 따옴표 없는 키도 오류입니다.
주석을 쓸 수 없습니다
//나 /* */ 모두 JSON에서는 문법 오류입니다. 설정 파일에 주석을 남기고 싶다면 "_comment" 같은 키를 쓰거나, JSON5나 YAML 같은 다른 형식을 써야 합니다.
VS Code 설정 파일처럼 주석이 들어가는 파일은 JSON이 아니라 JSONC라는 별도 형식입니다.
그 밖에 허용되지 않는 것들
undefined(null만 가능)NaN,Infinity- 함수, 정규식
- 숫자 앞의
+부호나 선행 0 (01) - 16진수 표기 (
0xFF)
큰 숫자를 넣으면 값이 바뀝니다
자바스크립트의 숫자는 **배정밀도 부동소수점(double)**입니다. 안전하게 표현할 수 있는 정수 범위는 ±(2^53 − 1), 약 9,007조입니다.
이 범위를 넘어서면 정밀도가 사라집니다.
{ "id": 9007199254740993 }
→ 파싱하면 9007199254740992 로 바뀝니다
트위터 스노플레이크 ID, 64비트 정수 기본키, 일부 결제 거래번호가 이 범위를 넘습니다. API에서 이런 값은 문자열로 주고받는 것이 표준적인 해법입니다.
이 도구도 자바스크립트 파서를 쓰므로 같은 제약이 있습니다. 큰 ID가 미묘하게 달라졌다면 이 문제입니다.
오류 위치를 읽는 법
문법 오류가 있으면 몇 번째 줄, 몇 번째 열에서 파싱이 멈췄는지 알려줍니다.
주의할 점은 표시된 위치가 실제 원인보다 뒤일 수 있다는 것입니다. 예를 들어 3번 줄 끝에 쉼표를 빠뜨리면 파서는 4번 줄에 들어와서야 이상을 감지합니다. 오류 지점의 바로 앞 줄부터 확인하는 편이 빠릅니다.
키 정렬은 언제 쓰나
'키 정렬' 기능은 객체의 키를 재귀적으로 사전순으로 다시 배열합니다. 두 JSON을 비교할 때 유용합니다.
같은 내용인데 키 순서만 다른 파일은 diff 도구가 전부 다른 것으로 표시합니다. 양쪽을 정렬한 뒤 비교하면 실제로 달라진 부분만 남습니다.
배열은 순서 자체가 의미를 가지므로 정렬하지 않습니다.
압축(minify)은 얼마나 효과가 있나
공백과 줄바꿈을 모두 제거합니다. 들여쓰기가 많은 파일은 30~50%까지 줄어듭니다.
다만 실제 웹 서비스에서는 서버가 gzip이나 brotli로 압축해 전송하므로, minify로 얻는 추가 이득은 생각보다 작습니다. 압축 알고리즘이 반복되는 공백을 매우 효율적으로 처리하기 때문입니다.
minify가 확실히 유용한 경우는 환경변수나 URL에 JSON을 담을 때처럼 길이 제한이 있는 상황입니다.
함께 확인하면 좋은 것
JSON을 Base64로 인코딩해야 한다면 Base64 인코더·디코더를, JWT 페이로드를 확인하려면 JWT 디코더를 이용하세요.