JSONキー並べ替えツール
JSONドキュメント内のすべてのオブジェクトのキーを再帰的にアルファベット順に並べ替え — 差分をきれいにし、設定ファイルを見やすくします。
931回閲覧
仕組み
JSONを貼り付けると、すべてのオブジェクトのキーがアルファベット順に並べ替えられた状態で返ってきます。重要なのは、この並べ替えが再帰的であるという点です — このツールは最上位のオブジェクトのキーを並べ替えて終わりにするのではなく、あらゆる深さのネストされたオブジェクトの内部にまで入り込み、それぞれを独立してアルファベット順にします。最も外側の階層だけを並べ替えると、文書の内部構造は手つかずのまま残ってしまい、単純なフラットオブジェクトより複雑なものに対しては目的を果たせません。実際のJSON(APIレスポンスや設定ファイル)は、ほとんど常に何段階もネストしています。
例えば{"user":{"zip":"1","name":"A"},"active":true}という入力が与えられた場合、このツールは最上位でactiveをuserより前に移動させるだけではありません — userオブジェクトの内部にも入り込み、nameをzipより前に入れ替え、結果として{"active":true,"user":{"name":"A","zip":"1"}}を生成します。配列はそのままにされます — 配列の要素順序は正確に保持されます。配列の順序は意味を持つ(配列は定義上順序づけられている)一方で、JSON仕様上、オブジェクトのキー順序は意味を持たないためです。
知っておくとよいこと
主な用途は差分(diff)やバージョン管理での比較を意味のあるものにすることです。同じデータを保持していても、キーが異なる順序でシリアライズされた2つのJSON文書は、直接比較すると、実際には何も変わっていないにもかかわらず、巨大でノイズだらけのテキスト差分を生み出します — すべての行が異なって見えてしまうのです。両方を先にこのソーターに通すことで、このノイズは解消されます。キーが同じアルファベット順になっていれば、プレーンテキストの差分は偶発的な並べ替えではなく、実際の内容の変更だけを示すようになります。設定ファイルを手作業で編集する際や、見慣れないAPIレスポンスを見やすくする際にも同様に役立ちます。
よくある質問
これはデータを変更しますか、それとも順序だけですか?
変わるのはキーの順序だけです — 値、ネスト構造、配列の内容はそのままです。JSONオブジェクトは仕様上順序を持たないため、これは常に安全で、何かを壊す心配のない変換です。
並べ替えはネストされたオブジェクトにも適用されますか、それとも最上位だけですか?
完全に再帰的です — 最も外側のオブジェクトだけでなく、あらゆる深さのすべてのオブジェクトが、それぞれ独立してキーをアルファベット順にされます。最上位だけを並べ替えると、内部のオブジェクトは元の、場合によっては一貫性のない順序のまま残ってしまいます。
JSONが無効な場合はどうなりますか?
黙って失敗するのではなく、明確な構文解析エラーが表示されます — 指摘された構文の問題を修正して再度お試しください。
配列も並べ替えますか?
いいえ — 配列は定義上順序を持ち、並べ替えると意味が変わってしまうため、配列要素の順序は正確に保持されます。アルファベット順にされるのはオブジェクトのキーだけです。
2つのファイルを比較する前になぜJSONのキーを並べ替える必要があるのですか?
プレーンテキストの差分ツールは行単位で比較するため、同じデータを持ちながらキーの順序が異なる2つのJSONファイルは、実質的には何も意味のある変更がなくても、差分ではほとんど完全に別物のように見えてしまいます。両方のファイルのキーを同じ方法で並べ替えることでこのノイズが取り除かれ、実際の内容の変更だけを反映した差分になります。
関連ツール
問題を報告
JSONキー並べ替えツール
コメント
まだコメントはありません — 最初のコメントを書いてみましょう!