← 가이드 목록

JSON Beautify, Minify, Validate를 상황별로 쓰는 방법

JSON 문법에서 자주 걸리는 오류와 원인, 그리고 정렬과 압축을 각각 언제 써야 하는지 정리했습니다.

json beautify json formatter json minify json validate

세 가지 동작의 목적이 다르다

Beautify는 사람이 읽기 위한 것입니다. 중첩 구조에 맞춰 줄바꿈과 들여쓰기를 넣어 데이터의 형태를 눈으로 파악할 수 있게 만듭니다.

Minify는 기계가 주고받기 위한 것입니다. 공백과 줄바꿈을 모두 제거해 전송 크기를 줄입니다. API 응답이 대부분 한 줄로 오는 이유입니다.

Validate는 문법이 올바른지 확인하는 것입니다. 사실 Beautify나 Minify를 수행하려면 먼저 파싱을 해야 하므로, 변환에 성공했다는 것 자체가 유효한 JSON이라는 증명이 됩니다.

JSON에서 가장 흔한 문법 오류

JSON은 JavaScript 객체 리터럴과 비슷해 보이지만 훨씬 엄격합니다. 아래는 실무에서 반복적으로 발생하는 오류입니다.

  • 마지막 요소 뒤의 쉼표: {"a":1,} 는 JavaScript에서는 허용되지만 JSON에서는 오류입니다. 배열 끝의 쉼표도 마찬가지입니다.
  • 작은따옴표 사용: JSON은 문자열과 키 모두 큰따옴표만 허용합니다.
  • 키를 따옴표로 감싸지 않음: {name:"a"} 는 JavaScript 객체이지 JSON이 아닙니다.
  • 주석: // 나 /* */ 는 JSON 표준에 없습니다. 설정 파일에 주석이 필요하면 JSON5나 YAML을 고려해야 합니다.
  • 이스케이프 누락: 문자열 안의 큰따옴표는 백슬래시로 이스케이프해야 하고, 줄바꿈은 \n 으로 표기해야 합니다.
  • NaN, Infinity, undefined: JSON에는 이런 값이 없습니다. null을 사용하거나 문자열로 표현해야 합니다.

큰 숫자를 다룰 때의 함정

JSON 자체는 숫자의 크기를 제한하지 않지만, 이를 처리하는 JavaScript는 안전하게 표현할 수 있는 정수 범위가 정해져 있습니다. 이 범위를 넘는 값은 정밀도가 손실되어 마지막 자리가 달라집니다.

데이터베이스의 큰 ID 값이나 스노우플레이크 방식으로 생성한 식별자를 JSON으로 주고받을 때 이 문제가 발생합니다. 서버에서는 정확한 값을 보냈는데 브라우저에서 읽으면 끝자리가 바뀌어 있는 것입니다.

해결책은 큰 식별자를 숫자가 아니라 문자열로 전달하는 것입니다. 많은 API가 ID를 문자열로 내려주는 이유가 여기에 있습니다.

언제 무엇을 쓰는가

디버깅할 때는 Beautify입니다. 로그에 한 줄로 찍힌 응답을 정렬해 보면 어떤 필드가 비어 있는지, 배열의 길이가 몇인지 바로 보입니다.

설정 파일을 수정한 뒤에는 Validate입니다. 배포한 다음에 문법 오류를 발견하면 서비스가 시작되지 않는 사고로 이어집니다. 커밋 전에 한 번 검사하는 습관이 도움이 됩니다.

요청 본문이나 응답 크기를 줄여야 할 때는 Minify입니다. 다만 gzip 압축이 적용된 환경에서는 공백 제거의 효과가 크지 않으므로, 실제 전송량을 측정해 보고 판단하는 것이 좋습니다.

이 문서에서 다룬 도구

Copied