【VSCode】 JSON の中身(キーの名前)をソートする方法

この記事は約4分で読めます。

ソート前と後の比較

こんにちは、さち です。

普段、ウェブサイトを作るときは「Visual Studio Code(以下:VSCode)」を使っています。動作が軽く色々な機能も追加できるのに、無料で利用できる最強のコードエディターアプリです。

今回は、この VSCode で、JSON ファイルの中身(キーの名前)をアルファベット順にソート並び替え)する方法について書いていきます。

VSCode の「settings.json」など、記述が多い JSON を見やすくしたい時に使うと便利ですよ。

スポンサーリンク

使い方

拡張機能をインストール

JSON のソートは、拡張機能「Sort JSON objects」を使うことで実現できます。

VSCode へのインストールはこちらのリンクからできます。

Sort JSON objects - Visual Studio Marketplace
Extension for Visual Studio Code - Sorts the keys within JSON objects

操作手順

  1. VSCode の設定ファイル「settings.json」をソートしてみましょう。
    エディター画面
  2. 右クリック→「Sort JSONと進みます。
    エディター画面
  3. JSON の内容がアルファベット順にソートされました。
    ソート前と後の比較

ソートの種類

Sort JSONアルファベット順
Sort JSON (by alphanum)アルファベット順(記号のソート順がデフォルトと違う)
Sort JSON (by key length)キーの名前の長さ順
Sort JSON (by type)値の種類順(値・文字列・配列・ブール値など)
Sort JSON (by values)値を内容でアルファベット順

上記のものに reverse が付く種類は、付いていないものと逆の順番にソートされます。

ただ、「by values」は、「数値」は昇順なのに「アルファベット」は降順にソートされます。バグってる感じがしますが、私はこのソートを使わないので気にしないことにしました。

設定

「Sort JSON objects」の設定は、VSCode の設定ファイル「settings.json」に次のような記述をすることでできます。

表示するソートの種類を減らす

エディター画面

初期設定では、右クリックをすると「Sort JSON」から「Sort JSON (reverse)」まで10種類のソート方法が並んでいます。

ただ、使うものは限られていると思うので必要ないものは、VSCode の「settings.json」に次のように追記することで、false にした同名の機能を非表示にできます。

"sortJSON.contextMenu": {
  "sortJSON": true,
  "sortJSONReverse": false, 
  "sortJSONAlphaNum": false,
  "sortJSONAlphaNumReverse": false,
  "sortJSONKeyLength": false,
  "sortJSONKeyLengthReverse": false,
  "sortJSONType": false,
  "sortJSONTypeReverse": false,
  "sortJSONValues": false,
  "sortJSONValuesReverse": false
}

この設定は、「Sort JSON objects」の設定ページにある上記のものと同名の項目で、チェックのオン/オフを切り替えることでもできます。

特定のキー名を最初/最後に固定する

最初に固定

VSCode の設定ファイル「settings.json」に "sortJSON.orderOverride" を追加し、「キー」の名前を配列で記述することで、それらの「キー」をソートから除外して最初に配置できます。

"sortJSON.orderOverride": [
  "workbench.startupEditor"
]

最後に固定

VSCode の設定ファイル「settings.json」に "sortJSON.orderUnderride" を追加し、「キー」の名前を配列で記述することで、それらの「キー」をソートから除外して最後に配置できます。

"sortJSON.orderOverride": [
  "editor.formatOnSave": false
]

 

コメント

タイトルとURLをコピーしました