유틸리티

JSON 정렬, 검증, 압축 한 번에 하는 방법

API 응답을 받았는데 한 줄로 쭉 이어져 있다. 중괄호와 대괄호가 수백 개씩 얽혀 있는 걸 눈으로 읽으려면 눈이 아프다. 게다가 어딘가에 쉼표 하나가 빠져서 파싱 에러가 나는데, 어디가 문제인지 찾을 수가 없다.

JSON이 깨지는 흔한 원인 5가지

  1. 마지막 요소 뒤 쉼표: {"a": 1, "b": 2,} → 마지막 쉼표(trailing comma)는 JSON에서 허용되지 않는다.
  2. 작은따옴표 사용: {'name': 'test'} → JSON은 반드시 큰따옴표만 허용한다.
  3. 키에 따옴표 누락: {name: "test"} → 키도 반드시 큰따옴표로 감싸야 한다.
  4. 줄바꿈 문자 미처리: 문자열 값 안에 이스케이프 안 한 줄바꿈이 있으면 파싱이 실패한다.
  5. 인코딩 문제: UTF-8이 아닌 인코딩으로 저장된 파일에서 한글이 깨지는 경우가 있다.

에러 메시지가 "Unexpected token at position 1234"처럼 나오면, 해당 위치를 찾기 위해 줄 번호를 세야 하는데 한 줄짜리 JSON에서는 사실상 불가능하다.

정렬하면 문제가 보인다

한 줄로 압축된 JSON을 들여쓰기로 정렬(pretty print)하면 구조가 한눈에 파악된다. 어디서 중괄호가 닫히는지, 배열이 몇 개인지, 어디에 쉼표가 빠졌는지 바로 보인다.

// 정렬 전
{"users":[{"id":1,"name":"김철수","active":true},{"id":2,"name":"이영희","active":false}]}

// 정렬 후
{
  "users": [
    {
      "id": 1,
      "name": "김철수",
      "active": true
    },
    {
      "id": 2,
      "name": "이영희",
      "active": false
    }
  ]
}

JSON 포매터에 데이터를 붙여넣고 정렬 버튼을 누르면 위처럼 바뀐다. 문법 오류가 있으면 어느 줄, 어느 위치가 잘못됐는지 바로 표시해줘서 디버깅 시간이 크게 줄어든다.

정렬과 압축, 언제 어떤 걸 쓰나

작업쓰는 상황결과
정렬 (Format)코드 리뷰, 디버깅, 구조 파악들여쓰기 추가, 가독성 향상
압축 (Minify)API 전송, 설정 파일 배포, 저장 용량 절약공백 제거, 파일 크기 감소
키 정렬 (Sort)여러 JSON 비교, 일관성 유지키를 알파벳순으로 정렬
TIP API 응답 두 개를 비교할 때 키 정렬을 먼저 하면 diff 비교가 훨씬 깔끔해진다. 키 순서가 다르면 내용이 같아도 다르게 보이기 때문이다.

JSON 에러는 찾으면 1초에 고치지만, 찾는 데 30분이 걸리는 경우가 많다. 정렬부터 하면 절반은 해결된다.