VSCodeでJSONをフォーマットする方法

採用はこちら

VS Codeには、JSONを整形するためのフォーマット機能が標準で用意されています。
そのため、単純にJSONを読みやすく整形したいだけであれば、Prettierなどの拡張機能を追加する必要はありません。

例えば、次のような1行のJSONがあるとします。

{"name":"Taro","age":30,"skills":["HTML","CSS","JavaScript"]}

VS Codeでフォーマットを実行すると、次のようにインデントや改行が自動的に整えられます。

{
  "name": "Taro",
  "age": 30,
  "skills": [
    "HTML",
    "CSS",
    "JavaScript"
  ]
}

JSONを手作業で改行したり、スペースを調整したりする必要がなくなるため、JSONファイルを編集するときはVS Codeのフォーマット機能を活用すると便利です。

目次

ショートカットキーでJSONをフォーマットする

VS CodeでJSONをフォーマットする最も簡単な方法は、「Format Document」を実行することです。

Windowsの場合

Windowsでは、JSONファイルを開いた状態で次のショートカットキーを押します。

Shift + Alt + F

現在開いているドキュメント全体がフォーマットされます。

macOSの場合

macOSでは次のショートカットキーを使用します。

Shift + Option + F

WindowsとはAltキーとOptionキーの表記が異なりますが、基本的な操作は同じです。

Linuxの場合

Linuxでは、デフォルトでは次のショートカットキーが割り当てられています。

Ctrl + Shift + I

OSによって「Format Document」のデフォルトショートカットが異なるため、自分が利用している環境に合わせて使い分けましょう。

右クリックメニューからJSONをフォーマットする

ショートカットキーを覚えていない場合は、右クリックメニューからフォーマットできます。

Format Documentを実行する

JSONファイルを開き、エディター内で右クリックします。

表示されたメニューから、

Format Document

を選択します。

日本語表示のVS Codeでは、「ドキュメントのフォーマット」などの名称で表示されます。

選択すると、現在開いているJSONファイル全体がフォーマットされます。

コマンドパレットからJSONをフォーマットする

VS Codeのコマンドパレットから「Format Document」を実行する方法もあります。

コマンドパレットを開く

WindowsまたはLinuxでは、次のショートカットキーを押します。

Ctrl + Shift + P

macOSでは次のキーを使用します。

Command + Shift + P

コマンドパレットが表示されたら、

Format Document

と入力します。

一覧から「Format Document」を選択すれば、現在開いているJSONファイル全体が整形されます。

ショートカットキーが変更されている場合や、どのコマンドを実行すればよいか分からない場合にも便利な方法です。

JSONの一部分だけをフォーマットする

JSONファイル全体ではなく、選択した部分だけをフォーマットすることもできます。

Format Selectionを利用する

フォーマットしたい範囲を選択してから、「Format Selection」を実行します。

WindowsやLinuxでは、デフォルトで次のキーが利用できます。

Ctrl + K
Ctrl + F

Ctrl + Kを押したあと、続けてCtrl + Fを押します。

macOSでは次のキーです。

Command + K
Command + F

JSON全体を整形したくない場合や、一部分だけインデントを整えたい場合に利用できます。

JSONを保存したときに自動フォーマットする

JSONを頻繁に編集する場合は、保存時に自動的にフォーマットされるよう設定しておくと便利です。

設定画面からFormat On Saveを有効にする

WindowsやLinuxでは、次のショートカットキーから設定画面を開けます。

Ctrl + ,

macOSでは次のキーです。

Command + ,

設定画面を開いたら、検索ボックスに次の文字列を入力します。

format on save

「Editor: Format On Save」を有効にします。

これで、ファイルを保存するたびにフォーマッターが自動的に実行されます。

settings.jsonで保存時フォーマットを設定する

GUIではなく、settings.jsonを直接編集して設定することもできます。

すべての対応ファイルを保存時にフォーマットする

すべての対応言語で保存時フォーマットを有効にする場合は、次の設定を追加します。

{
  "editor.formatOnSave": true
}

この設定を有効にすると、JSONだけでなく、利用可能なフォーマッターが設定されているほかの言語でも保存時フォーマットが実行されます。

JavaScriptやHTMLなどまで自動整形したくない場合は、言語ごとの設定を利用した方がよいでしょう。

JSONだけ保存時にフォーマットする

JSONだけ自動整形したい場合は、言語固有設定を利用できます。

JSON専用の設定を追加する

settings.jsonに次のように記述します。

{
  "[json]": {
    "editor.formatOnSave": true
  }
}

[json]は、JSONにだけ適用する設定を意味します。

この方法であれば、JavaScriptやHTMLなどの保存時フォーマットには影響を与えず、JSONだけを自動整形できます。

JSONCも保存時にフォーマットする

VS Codeでは、通常のJSONとは別に「JSON with Comments」という言語モードがあります。

JSONCとは

JSONCは、JSONにコメントなどを記述できるようにした形式です。

VS Codeでは、次のような設定ファイルがJSONCとして扱われます。

settings.json
tasks.json
launch.json

JSONCでは、例えば次のようなコメントを記述できます。

{
  // エディターの設定
  "editor.fontSize": 14
}

通常のJSONではコメントを記述できません。

そのため、JSONとJSONCは同じものではない点に注意しましょう。

JSONCでも保存時フォーマットを有効にする

JSONとJSONCの両方を保存時に整形したい場合は、次のように設定できます。

{
  "[json]": {
    "editor.formatOnSave": true
  },
  "[jsonc]": {
    "editor.formatOnSave": true
  }
}

通常の.jsonファイルとVS Codeの設定ファイルの両方を編集する場合に便利です。

JSONCでは末尾カンマにも注意する

JSONCでは、コメントだけでなく末尾カンマを扱えるケースもあります。

例えば次のような記述です。

{
  "editor.fontSize": 14,
}

ただし、VS Codeでは設定内容や対象ファイルによって警告が表示されることがあります。

一般的なJSONとして外部システムに渡すデータでは、末尾カンマを使わない方が安全です。

VSCode標準のJSONフォーマッターを指定する

Prettierなど複数のフォーマッターをインストールしている場合、JSONで使用するフォーマッターを明示的に指定できます。

標準JSONフォーマッターを設定する

VS Code標準のJSONフォーマッターを利用する場合は、次のように設定できます。

{
  "[json]": {
    "editor.defaultFormatter": "vscode.json-language-features",
    "editor.formatOnSave": true
  },
  "[jsonc]": {
    "editor.defaultFormatter": "vscode.json-language-features",
    "editor.formatOnSave": true
  }
}

vscode.json-language-featuresは、VS Codeに標準搭載されているJSON関連機能の識別子です。

単純にJSONを整形したいだけであれば、この標準フォーマッターだけでも十分です。

PrettierでJSONをフォーマットする

Web開発では、Prettierを使ってJSONをフォーマットする方法もよく利用されます。

Prettierを使うメリット

PrettierはJSONだけでなく、次のようなファイルのフォーマットにも利用できます。

JavaScript
TypeScript
JSON
HTML
CSS
Markdown

プロジェクト全体でフォーマットルールを統一したい場合に便利です。

JSONだけを編集するのであればVS Code標準フォーマッターでも十分ですが、Web開発ではPrettierを導入するケースが多くあります。

Prettierをインストールする

VS Codeの拡張機能画面からPrettierをインストールできます。

拡張機能画面を開く

WindowsやLinuxでは、次のショートカットキーを利用できます。

Ctrl + Shift + X

拡張機能の検索欄に、

Prettier - Code formatter

と入力します。

該当する拡張機能をインストールします。

PrettierをJSONのデフォルトフォーマッターにする

Prettierをインストールしただけでは、環境によってVS Code標準フォーマッターが使用される場合があります。

settings.jsonでPrettierを指定する

JSONでPrettierを使用したい場合は、次のように設定します。

{
  "[json]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.formatOnSave": true
  }
}

esbenp.prettier-vscodeは、VS Code版Prettier拡張機能の識別子です。

これにより、JSONファイルを保存したときにPrettierで自動整形できます。

JSONとJSONCでフォーマッターを分ける

JSONではPrettierを使い、JSONCではVS Code標準フォーマッターを使う設定も可能です。

フォーマッターを言語ごとに指定する

例えば、次のように設定できます。

{
  "[json]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.formatOnSave": true
  },
  "[jsonc]": {
    "editor.defaultFormatter": "vscode.json-language-features",
    "editor.formatOnSave": true
  }
}

これは一例です。

JSONCでもPrettierを利用できるため、必ずVS Code標準フォーマッターを使用しなければならないわけではありません。

プロジェクトの運用ルールに合わせて選択しましょう。

GUIからデフォルトフォーマッターを変更する

settings.jsonを直接編集しなくても、VS Codeの画面からフォーマッターを指定できます。

Format Document Withを利用する

JSONファイルを開いた状態で右クリックし、

Format Document With...

を選択します。

続いて、

Configure Default Formatter...

を選択します。

利用できるフォーマッターが一覧表示されるため、

Prettier - Code formatter

またはVS Code標準のJSONフォーマッターを選択します。

同じ言語に複数のフォーマッターが登録されている場合、この方法で使用するフォーマッターを明示するとトラブルを防げます。

JSONのインデント幅を変更する

JSONを2スペースではなく4スペースで整形したい場合もあります。

VSCode側のインデント設定

VS Codeには、次のようなインデント設定があります。

{
  "editor.tabSize": 4,
  "editor.insertSpaces": true
}

editor.tabSizeはインデント幅を指定します。

editor.insertSpacesをtrueにすると、Tab入力時にタブ文字ではなくスペースを使用します。

ただし、フォーマット時のインデント幅は使用するフォーマッター側の設定に影響される場合があります。

Prettierのインデント幅を変更する

Prettierを使っている場合は、Prettier側で設定するのが確実です。

.prettierrcでtabWidthを指定する

例えば、.prettierrcに次のように記述します。

{
  "tabWidth": 4
}

これにより、Prettierでは4スペースを基準としてフォーマットされます。

チーム開発では、VS Codeの個人設定だけに依存せず、.prettierrcなどのプロジェクト設定で統一すると環境差を減らせます。

Prettierでは設定ファイルが優先される

Prettierを利用する場合は、設定の優先順位にも注意が必要です。

プロジェクト側の設定を確認する

例えば、プロジェクト内に次のようなファイルが存在する場合があります。

.prettierrc
prettier.config.js
.editorconfig

これらの設定が存在すると、VS Code側で設定したPrettierの値よりプロジェクト設定が優先される場合があります。

そのため、

「VS CodeでtabWidthを変更したのに反映されない」

といった場合は、プロジェクト内のPrettier設定ファイルも確認しましょう。

JSONをフォーマットできない原因

VS CodeでJSONをフォーマットできない場合は、いくつかの原因が考えられます。

JSONに構文エラーがある

JSONの構文が壊れていると、正常にフォーマットできない場合があります。

例えば、次のJSONにはカンマが不足しています。

{
  "name": "Taro"
  "age": 30
}

正しくは次のように記述します。

{
  "name": "Taro",
  "age": 30
}

VS Codeでは構文エラーがある部分に赤い波線などが表示されることがあります。

フォーマットできない場合は、まずJSONに構文エラーがないか確認しましょう。

ファイルの言語モードがJSONになっていない

.txtファイルなどにJSONを書いている場合、VS CodeがJSONとして認識していない可能性があります。

ステータスバーで言語モードを確認する

画面右下の言語モードを確認します。

例えば、

Plain Text

になっている場合は、クリックして、

JSON

を選択します。

JSONCとして扱いたい場合は、

JSON with Comments

を選択します。

言語モードが正しく設定されることで、JSON向けのフォーマット機能を利用できるようになります。

複数のフォーマッターが設定されている

Prettierなど複数のフォーマッターが登録されている場合、使用するフォーマッターの選択を求められることがあります。

デフォルトフォーマッターを指定する

次のメニューを利用します。

Format Document With...

その後、

Configure Default Formatter...

を選択します。

または、settings.jsonで次のように指定できます。

{
  "[json]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  }
}

使用するフォーマッターを明示しておくと、環境による動作の違いを減らせます。

PrettierのrequireConfig設定を確認する

Prettierを使用している場合は、prettier.requireConfigにも注意が必要です。

requireConfigがtrueになっている場合

例えば次の設定があるとします。

{
  "prettier.requireConfig": true
}

この設定が有効になっている場合、.prettierrcなどのPrettier設定ファイルが存在しないプロジェクトでは、Prettierがフォーマットを実行しない場合があります。

Prettierを選択しているのにJSONが整形されない場合は、この設定も確認するとよいでしょう。

.prettierignoreを確認する

Prettierでは、.prettierignoreによってフォーマット対象からファイルを除外できます。

JSONが除外されていないか確認する

例えば、.prettierignoreに次のような記述があるとします。

data/*.json

この場合、対象ディレクトリ内のJSONファイルはPrettierのフォーマット対象から除外される可能性があります。

特定のJSONファイルだけフォーマットできない場合は、.prettierignoreも確認しましょう。

JSONとJSONCの違いを理解しておく

JSONとJSONCを混同すると、構文エラーやフォーマットエラーの原因になります。

通常のJSONではコメントを書けない

次のような記述は、通常のJSONでは正しい形式ではありません。

{
  // ユーザー名
  "name": "Taro"
}

通常のJSONでは、コメントを削除する必要があります。

{
  "name": "Taro"
}

JSONCではコメントを書ける

VS Codeのsettings.jsonなどではJSONCが利用されるため、コメントを書くことができます。

{
  // フォントサイズ
  "editor.fontSize": 14
}

JSONを外部APIやWebサービスに送信する場合は、基本的に標準JSONとして有効な形式にする必要があります。

VS Code内部の設定ファイルと、一般的なJSONデータを区別して扱いましょう。

VSCode標準フォーマッターとPrettierのどちらを使うべきか

JSONをフォーマットする方法として、VS Code標準フォーマッターとPrettierのどちらを選ぶべきか迷うことがあります。

JSONだけを編集するならVSCode標準機能で十分

単純にJSONを読みやすく整形したいだけであれば、VS Code標準フォーマッターで十分です。

追加の拡張機能をインストールする必要がないため、設定もシンプルです。

Web開発全体で統一するならPrettierが便利

JavaScriptやTypeScript、HTML、CSS、Markdownなども同じプロジェクトで扱う場合は、Prettierを利用するとフォーマットルールを統一しやすくなります。

チーム開発では.prettierrcなどをGitで共有することで、メンバー間のフォーマット差も減らせます。

JSONだけならVS Code標準、Web開発プロジェクト全体を整形するならPrettierという使い分けが分かりやすいでしょう。

VSCodeでJSONをフォーマットするおすすめ設定

JSONを頻繁に扱う場合は、保存時フォーマットまで有効にしておくと便利です。

VSCode標準機能だけを使う場合

拡張機能を使わずにJSONとJSONCを自動整形する場合は、次のように設定できます。

{
  "[json]": {
    "editor.defaultFormatter": "vscode.json-language-features",
    "editor.formatOnSave": true
  },
  "[jsonc]": {
    "editor.defaultFormatter": "vscode.json-language-features",
    "editor.formatOnSave": true
  }
}

シンプルなJSON編集であれば、この設定で十分です。

Prettierを使う場合

Web開発でPrettierを使用する場合は、例えば次のように設定できます。

{
  "[json]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.formatOnSave": true
  },
  "[jsonc]": {
    "editor.defaultFormatter": "vscode.json-language-features",
    "editor.formatOnSave": true
  }
}

さらにプロジェクト側に.prettierrcを配置しておけば、チーム全体で同じフォーマットルールを共有できます。

まとめ

VS Codeでは、標準機能だけでJSONを簡単にフォーマットできます。

最も手軽なのは「Format Document」を利用する方法です。

Windowsでは、

Shift + Alt + F

macOSでは、

Shift + Option + F

Linuxでは、

Ctrl + Shift + I

を利用できます。

さらに、

{
  "editor.formatOnSave": true
}

を設定すると、ファイル保存時に自動フォーマットできます。

JSONだけを整形するのであればVS Code標準フォーマッターで十分です。

一方、JavaScriptやTypeScript、HTML、CSSなどを含むWeb開発プロジェクトでは、Prettierを利用するとフォーマットルールを統一しやすくなります。

JSONをフォーマットできない場合は、構文エラー、言語モード、デフォルトフォーマッター、prettier.requireConfig、.prettierignore、JSONとJSONCの違いなどを順番に確認すると原因を特定しやすくなります。

以上、VSCodeでJSONをフォーマットする方法についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次