AZ Tools

JSON 키 정렬

개발

JSON 객체 키를 알파벳순으로 재정렬 — 중첩 객체와 객체 배열로 재귀 하강 옵션. 배열 자체는 원래 순서 유지 — 객체 키 순서만 변경. 결정론적 diff(정렬된 `package.json` 커밋 → 리뷰어가 의미 있는 변경만 봄)·스냅샷 테스트 전 API 픽스처 정규화·키 순서에 엄격한 다운스트림 도구의 예상 순서 일치에 유용.

정렬됨

{
  "author": {
    "email": "demo@example.com",
    "name": "Alice"
  },
  "dependencies": {
    "astro": "^4",
    "react": "^18"
  },
  "name": "demo",
  "scripts": {
    "build": "astro build",
    "dev": "astro dev",
    "test": "vitest"
  },
  "version": "1.0.0"
}

객체 키만 재정렬. 배열 요소 순서는 보존 — 필요 시 별도 정렬.

사용법

  1. JSON 붙여넣기(`package.json` 또는 모든 객체).
  2. `deep` 토글로 중첩 객체도 정렬 또는 끄고 최상위 키만.
  3. 오름차순/내림차순 선택 후 결과 복사.

자주 묻는 질문

배열 요소 재정렬?
아니요 — 객체 키만. 배열은 요소 위치가 보통 의미 있어서 원래 순서 유지. 배열 요소도 정렬 필요하면 별도 정렬 단계(예: jq `sort_by`) 먼저 실행.
`package.json` 왜 정렬?
`npm` 같은 도구는 키 순서에 관대하지만 사람은 아님. 정렬은 리뷰어가 실제 변경(새 의존성)에 집중하게 하고 `npm install`이 재배치한 churn 무시. 일부 팀은 `sort-package-json` pre-commit 훅으로 강제.
로케일 인식 정렬?
아니요 — 코드 포인트 정렬·선택적 대소문자 무시. `jq`·`Object.keys().sort()`·대부분 언어 표준 라이브러리 기본과 일치. 로케일 콜레이션은 비 ASCII 키에 다른 결과 줄 수 있지만 정규 출력에는 거의 원치 않음.
JSON5·주석·후행 쉼표?
엄격한 JSON만 — 입력은 `JSON.parse` 통해야 함. 주석 있는 설정 파일은 먼저 제거 또는 JSON5 파서 사용 후 붙여넣기.

관련 도구