AZ Tools

JSON キーソート

開発

JSON オブジェクトのキーをアルファベット順に並べ替え — ネストオブジェクトとオブジェクト配列への再帰下降オプション。配列自体は元の順序を保つ — オブジェクトキー順序のみ変更。決定論的差分(ソート済み `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 パーサを使ってから貼り付け。

関連ツール