JSON ファイルとは何か、何で開くか、どう編集するか
要点:メモ帳での文字化けから JSON ファイルを開く三つの方法まで、編集後に壊れていないことを確認する手順と、巨大なファイルが開かないときの対処法を解説します。

要点:JSON ファイルを開く前にエンコーディングと BOM を確認し、構造がオブジェクトか配列だけであることを確かめましょう。編集後は括弧やカンマを目視で追うのではなく、必ずパーサーで検証してください。
拡張子が
.jsonのただのプレーンテキストファイルで、メモ帳でも開けます。本当の悩みは「開けない」ことではなく、開いた後に「どこを壊したか分からない」ことです。
1. JSON ファイルの中身は何か
正しい JSON ファイルに入れられるのは二つのうち一つだけです。オブジェクト {...} か配列 [...] で、それ以外は許されません。変数宣言もコメントも関数もありません。
{
"name": "order service",
"port": 8080,
"debug": false,
"upstream": ["10.0.0.11", "10.0.0.12"],
"timeout": null
}
構造として三つを押さえれば十分です。
| 見えるもの | 意味 | 対応するプログラミング概念 |
|---|---|---|
{ } で囲まれたキーと値のペア |
オブジェクト。キーは二重引用符付きの文字列でなければならない | Map / struct |
[ ] で囲まれた値の並び |
配列。要素の型は異なってもよい | List |
| 六つの値の型 | 文字列、数値、真偽値、null、オブジェクト、配列 | この六つだけ。日付も整数もない |
拡張子は中身を決めません。package.json、tsconfig.json、composer.json はすべて同じ種類のもので、ツールごとに異なるキーを読むと取り決めているだけです。
2. 場面に応じた三つの開き方
ちょっと見るだけ:ブラウザで開きます。Chrome や Edge のウィンドウにファイルをドラッグすると、ブラウザがそのまま表示します。JSON Viewer 拡張が入っていれば、自動で整形され折りたたみも可能になります。
中身を編集する:エディタを使います。VS Code、Sublime、Notepad++ はいずれも JSON のシンタックスハイライトと括弧の対応付けを備え、VS Code では Shift + Alt + F で整形できます。Windows のメモ帳は保存時に BOM を付けることがあるため、設定変更が反映されない恐れがあります。避けた方が無難です。
何も入れたくない、検証だけしたい:オンライン JSON フォーマッタを使います。貼り付けると行・列番号、エラー位置、折りたたみ可能なツリーがすぐに表示され、終わったら結果をコピーできます。データはブラウザ内でローカル処理され、サーバーにはアップロードされません。
大きなファイル(数十 MB 以上):エディタで無理に開かないでください。100 MB の JSON を VS Code で開くと、人生観が揺らぐほど固まります。まずコマンドラインで構造を確認します。
# 最初の 20 行を見て、配列かどうか確認する
head -n 20 data.json
# jq でトップレベルのキーだけを一覧する(ファイル全体は読み込まない)
jq -r 'keys[]' data.json | head
# 配列の長さを数える
jq 'length' data.json
3. ダブルクリックで文字化けが開いたとき
原因は三つあり、対処もそれぞれ異なります。
- 実はバイナリファイル(圧縮アーカイブやデータベースのエクスポートを
.jsonにしたものなど)。file data.jsonで実際の種類を確認し、無理にテキストとして扱わない。 - エンコーディングが UTF-8 ではない。GBK で符号化された中国語は UTF-8 環境では文字化けします。エディタの「エンコーディングを指定して再度開く」で GBK を一度試し、正しく表示されたら UTF-8 で保存します。
- ファイルが暗号化または圧縮されている。先頭が
PK(zip)や大量の疑問符になっているのが症状です。まず解凍または復号が必要です。
4. 編集後に壊れていないことを確認する方法
JSON は容赦がありません。カンマが一つ足りない、一つ多い、引用符が一つ足りないだけでファイル全体が死に、報告されるエラー位置もしばしば次の行を指します。ですから編集後は必ず検証し、目に頼らないことです。
危険度の高い三つの編集操作(トラブルを起こす頻度順):
| 操作 | よくある結果 | 避け方 |
|---|---|---|
| 設定の塊を貼り付ける | 末尾カンマや全角記号を持ち込む | 貼り付けた直後に一度整形する |
| キーの順序を手で入れ替える | カンマが増える、または減る | エディタの行移動コマンドを使い、手で打ち直さない |
| 配列の最後の要素を削除する | ,] が残る |
削除後に括弧の対応を確認する |
検証は簡単です。オンライン検証ツールに貼り付けて赤い文字を探すか、コマンドラインで一行実行します。
python3 -m json.tool config.json > /dev/null && echo OK
OK と表示されれば正しいファイルです。フィールドの型も検証したい場合(たとえば port は数値、name は空でないこと)は、JSON Schemaを書く方が人の目よりはるかに信頼できます。
5. .json と近縁の形式との違い
| 拡張子 | 違い | 標準パーサーで読めるか |
|---|---|---|
.json |
標準 JSON | 読める |
.jsonc |
// と /* */ コメントを許可 |
読めない。先にコメントを除去する必要がある |
.json5 |
コメント、単一引用符、引用符なしキー、末尾カンマを許可 | 読めない。JSON5 パーサーが必要 |
.jsonl / .ndjson |
1 行ごとに独立した JSON。ファイル全体は正しい JSON ではない | 全体としては読めない。行単位で読む必要がある |
tsconfig.json にコメントが書かれていて驚かないでください。実際には .jsonc として扱われます。同じ内容を JSON.parse に渡すとエラーになります。相互変換が必要なときは JSON5 → JSON でコメントと末尾カンマをワンクリックで除去できます。
6. 保存形式を切り替えるべきタイミング
JSON は「構造が固定されていない、人間が読む必要がある、言語をまたいで運ばれる」場面に向いています。ファイルが数十 MB を超え、フィールド構造が安定し、条件付きクエリが必要なら、JSON に留まるのは自分に面倒を課すだけです。SQLite や Parquet に移すか、データベースに読み込みましょう。読み書きの性能は桁違いです。具体的なトレードオフは大きな JSON のパースとストリーミングを参照してください。
FAQ
開くには大きすぎる JSON ファイルはどう調べればよいですか?
エディタで無理に開かないでください。100 MB の JSON を VS Code で開くと、人生観が揺らぐほど固まります。まずコマンドラインで構造を確認します。head -n 20 で配列かどうかを確かめ、jq -r 'keys[]' でトップレベルのキーだけを一覧し、jq 'length' で配列の長さを数えます。いずれもファイル全体を読み込みません。
メモ帳で編集すると設定が反映されなくなるのはなぜですか?
Windows のメモ帳は保存時に BOM を付けることがあり、BOM 付きのファイルは設定のパースに失敗するため、編集内容が反映されません。記事のおすすめは VS Code、Sublime、Notepad++ など、JSON のシンタックスハイライトと括弧の対応付けを備えたエディタです。すでにメモ帳を使った場合は、「UTF-8(BOM なし)」で再度保存して試してください。
JSON ファイルを JSON5 として扱い、コメントを追加してもよいですか?
いいえ。標準パーサーは .json ファイル内のコメントを許さず、JSON.parse は即座にエラーを出します。コメントは対応するパーサーで読む .jsonc や .json5 に入れます。tsconfig.json のようなファイルは実際には .jsonc として扱われ、同じ内容を JSON.parse に渡すと失敗します。