JSON 키 정렬
JSON 객체 키를 알파벳순 정렬. 중첩 객체로 재귀해서 전체 문서 정규화 옵션.
정렬됨
{
"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"
}객체 키만 재정렬. 배열 요소 순서는 보존 — 필요 시 별도 정렬.
사용법
- JSON 붙여넣기(
package.json또는 모든 객체). deep토글로 중첩 객체도 정렬 또는 끄고 최상위 키만.- 오름차순/내림차순 선택 후 결과 복사.
자세한 설명
펼치기접기
JSON 객체의 키를 알파벳 순으로 재정렬하며, 중첩 객체와 객체 배열로 재귀 하강할지 고를 수 있습니다. 배열 자체는 원래 순서를 유지하고 객체의 키 순서만 바뀝니다. 결정적인 diff를 만들 때(정렬한 package.json을 커밋해 리뷰어가 의미 있는 변경만 보게 할 때), 스냅샷 테스트 전에 API 픽스처를 정규화할 때, 키 순서에 엄격한 후속 도구가 기대하는 순서에 맞출 때 씁니다.
배열을 건드리지 않는 것은 빠진 기능이 아니라 올바른 동작입니다. 객체는 정의상 순서 없는 모음이라 키를 재배열해도 뜻이 달라지지 않지만, JSON 배열은 순서가 있어서 정렬하면 문서가 달라집니다. 정렬한 파일과 원본을 파싱하면 같은 값이 나오는 이유도 이것입니다. 움직이는 것은 diff이지 데이터가 아닙니다.
정렬은 키의 문자열 형태를 기준으로 하는데, 직관적인 순서와는 다릅니다. 대문자가 소문자보다 앞서므로 Name이 age 위로 갑니다. 숫자가 문자보다 앞서고, 숫자로 된 키는 문자열로 정렬되어 10이 2보다 앞에 놓입니다. 대소문자가 섞인 키를 가진 파일은 처음에 알파벳순이 아니라 뒤섞인 것처럼 보일 텐데, 같은 일을 하는 다른 도구들도 모두 이 순서를 만들어 냅니다.
JSON은 중복 키를 허용하고 파서는 마지막 것만 남기는 식으로 처리하므로, 같은 키를 두 번 담은 문서는 여기서도 다른 어디에서와 마찬가지로 값을 하나 잃습니다. 아주 큰 정수가 또 하나의 조용한 손실입니다. 안전 정수 범위를 넘는 값은 파싱하고 다시 직렬화하는 사이에 달라지며, 19자리 식별자를 문자열로 두어야 하는 이유가 이것입니다.
이 툴을 찾는 가장 흔한 이유인 package.json에 대해 한 가지 경고가 있습니다. 키 정렬 자체는 안전하지만 그 파일 안의 모든 항목이 실제로 순서에서 자유롭지는 않습니다. exports 맵은 노드의 해석기가 선언된 순서대로 대조하므로, 이것을 정렬하면 패키지가 내주는 진입점이 바뀔 수 있습니다. 최상위만 정렬하고 그 항목은 그대로 두십시오.
자주 묻는 질문
배열 요소 재정렬?
아니요 — 객체 키만. 배열은 요소 위치가 보통 의미 있어서 원래 순서 유지. 배열 요소도 정렬 필요하면 별도 정렬 단계(예: jq sort_by) 먼저 실행.
package.json 왜 정렬?
npm 같은 도구는 키 순서에 관대하지만 사람은 아님. 정렬은 리뷰어가 실제 변경(새 의존성)에 집중하게 하고 npm install이 재배치한 churn 무시. 일부 팀은 sort-package-json pre-commit 훅으로 강제.
로케일 인식 정렬?
아니요 — 코드 포인트 정렬·선택적 대소문자 무시. jq·Object.keys().sort()·대부분 언어 표준 라이브러리 기본과 일치. 로케일 콜레이션은 비 ASCII 키에 다른 결과 줄 수 있지만 정규 출력에는 거의 원치 않음.
JSON5·주석·후행 쉼표?
엄격한 JSON만 — 입력은 JSON.parse 통해야 함. 주석 있는 설정 파일은 먼저 제거 또는 JSON5 파서 사용 후 붙여넣기.
관련 도구
JSON 정규화 (RFC 8785 JCS)
RFC 8785대로 JSON을 정규화하고 해시합니다: UTF-16 키 순서, ECMAScript 숫자 표기, 공백 제거, 그리고 그 바이트의 SHA-256.
개발
JSON 평탄화 / 복원 (점 표기)
중첩 JSON을 단일 레벨 점 표기 키로 평탄화하거나, 평탄한 키에서 중첩 JSON을 복원 — 구분자·배열 표기 설정 가능, 브라우저 안에서 완전 가역.
개발
UUID v5 생성기
네임스페이스와 이름으로 결정적 네임스페이스 기반 UUID(버전 5, SHA-1)를 생성합니다 — 같은 입력은 항상 같은 UUID를 만듭니다.
개발
SSH 공개키 검사기
SSH 공개키와 authorized_keys, known_hosts 줄을 해석합니다. 알고리즘, 키 길이, SHA256·MD5 지문, 주석과 옵션을 보여 줍니다.
개발
JSON 포맷터 & 검증기
브라우저에서 바로 JSON을 포맷·정렬·압축·검증하세요.
개발
JWT 디코더
JWT의 헤더·클레임·만료를 즉시 확인하세요.
개발