
JSONをオンラインでフォーマットする方法 — 完全ガイド
📷 Lukas / PexelsJSONをオンラインでフォーマットする方法 — 完全ガイド
無料のオンラインJSONフォーマッターを使ってJSONデータをフォーマット、検証、クリーンアップする方法を学びましょう。開発者やAPIデバッグに最適です。
JSONとは?
JSON(JavaScript Object Notation)は、人間が読み書きしやすく、機械が解析・生成しやすい軽量なデータ交換フォーマットです。現代のWeb開発において、APIレスポンス、設定ファイル、データストレージの主要なフォーマットです。
APIを扱うなら、JSONに常に遭遇します。ほぼすべてのREST APIレスポンス、すべてのWebhookペイロード、Node.jsプロジェクトのすべての設定ファイルはJSONです。JSONを読み、フォーマットし、デバッグする方法を知ることは、開発者の核心的なスキルです。
なぜJSONをフォーマットするのか?
圧縮されたJSONは読みにくいです。APIレスポンスはしばしばホワイトスペースなしの1行として到着します — デバッグするのは悪夢です。フォーマット(または「プリティプリント」)するとJSONに適切なインデントと改行が追加され、構造を一目で理解できるようになります。
フォーマット前:
{"name":"John Doe","age":30,"city":"New York","hobbies":["reading","coding"],"address":{"street":"123 Main St","zip":"10001"}}
フォーマット後:
{
"name": "John Doe",
"age": 30,
"city": "New York",
"hobbies": [
"reading",
"coding"
],
"address": {
"street": "123 Main St",
"zip": "10001"
}
}
その違いは劇的です。フォーマット後のバージョンでは、トップレベルのキーが5つあること、hobbiesが2つのアイテムを持つ配列であること、addressがネストされたオブジェクトであることが一目でわかります。圧縮されたバージョンでは、一致する中括弧と角括弧を視覚的に解析しなければなりません。
JSONフォーマッターの使い方
- JSONを貼り付ける — 入力フィールドにJSONデータを貼り付ける
- 「フォーマット」をクリック — 2または4スペースのインデントでクリーンアップ
- 「ミニファイ」をクリック — JSONを1行に圧縮
- 結果をコピー — ワンクリックでクリップボードにコピー
フォーマッターは貼り付けた際にJSONを検証するので、何か問題があれば即座にフィードバックが得られます。
よくあるJSONエラー(と修正方法)
JSONには厳格な構文ルールがあり、どれか一つに違反してもパースエラーが発生します。実際に最もよく見かけるエラーを頻度順に紹介します:
1. 末尾のカンマ
最も一般的なJSONミスです。JavaScriptは配列やオブジェクトの末尾のカンマを許可するため、開発者はJSONではそれが許可されていないことを忘れがちです。
// 誤り — "coding"の後に末尾のカンマ
{
"hobbies": ["reading", "coding",]
}
// 正しい
{
"hobbies": ["reading", "coding"]
}
2. ダブルクォートの代わりにシングルクォート
JSONはすべての文字列にダブルクォートを必要とします。シングルクォートはJavaScriptとPythonでは有効ですが、JSONの解析を壊してしまいます。
// 誤り
{'name': 'John Doe'}
// 正しい
{"name": "John Doe"}
3. クォートなしのキー
JavaScriptオブジェクトでは(単純な識別子の場合)クォートなしのキーが使えますが、JSONではすべてのキーはダブルクォートで囲まれた文字列でなければなりません。
// 誤り
{name: "John Doe", age: 30}
// 正しい
{"name": "John Doe", "age": 30}
4. JSONのコメント
JSONはコメントをサポートしていません。JSONはJavaScriptに似ているため、またJavaScriptはコメントをサポートしているため、これは驚く方も多いです。設定ファイルにコメントが必要な場合は、JSONC(VS CodeでサポートされているJSON with Comments)またはYAMLを使用してください。
// 誤り
{
"port": 3000, // サーバーポート
"host": "localhost"
}
// 正しい
{
"port": 3000,
"host": "localhost"
}
5. エスケープされていない特殊文字
バックスラッシュ、ダブルクォート、または制御文字を含む文字列は適切にエスケープする必要があります:
// 誤り — エスケープされていないバックスラッシュとクォート
{"path": "C:\Users\john", "note": "He said "hello""}
// 正しい
{"path": "C:\\Users\\john", "note": "He said \"hello\""}
6. 無効な値の型
JSONがサポートする値の型は文字列、数値、ブーリアン(true/false)、null、オブジェクト、配列のみです。それ以外は無効です:
// 誤り
{"value": undefined}
{"count": NaN}
{"total": Infinity}
{"date": new Date()}
// 正しい代替
{"value": null}
{"count": 0}
{"total": 9999999}
{"date": "2026-03-15T10:30:00Z"}
コマンドラインからJSONをフォーマットする
Webベースのツールにアクセスできない場合や、スクリプトの一部としてJSONをフォーマットする必要がある場合、以下のコマンドライン方法が役立ちます:
Pythonを使用する(ほとんどのシステムで利用可能)
# JSONファイルをフォーマット
python3 -m json.tool input.json
# パイプされたJSONをフォーマット
curl -s https://api.example.com/data | python3 -m json.tool
# カスタムインデントでフォーマット
python3 -c "import json,sys; print(json.dumps(json.load(sys.stdin), indent=4))" < input.json
jqを使用する(JSONのスイスアーミーナイフ)
jqは専用のJSONプロセッサであり、コマンドラインでJSONを扱うための最も強力なツールです:
# プリティプリント
cat data.json | jq '.'
# 特定のフィールドをフォーマットして抽出
cat data.json | jq '.users[0].name'
# APIレスポンスをフォーマット
curl -s https://api.example.com/users | jq '.'
JSONを定期的に扱っていてjqをインストールしていない場合は、今すぐインストールしましょう。無数の時間を節約できます。
Node.jsを使用する
# クイックフォーマット
node -e "console.log(JSON.stringify(JSON.parse(require('fs').readFileSync('/dev/stdin','utf8')),null,2))" < input.json
JSONを扱うためのヒント
インデントを賢く選ぶ
- 2スペースインデント: よりコンパクトで、画面により多くの内容が表示されます。JavaScript/TypeScriptプロジェクトやほとんどのWebフレームワークで人気です。ほとんどのAPIドキュメントで使用されています。
- 4スペースインデント: 深くネストされた構造が読みやすくなります。PythonプロジェクトやエンタープライズJava環境で一般的です。
- タブインデント: 技術的には有効ですがJSONでは稀です。スペースを使用してください。
ほとんどのWeb開発では、2スペースが実用的な選択です。水平スペースを無駄にせずに十分な視覚的階層を提供します。
デプロイ前に必ず検証する
特に手動で書いたり変更したりした場合は、本番環境で使用する前に必ずJSONを検証してください。コンマの欠落や括弧の不一致が1つあるだけでアプリケーション全体がクラッシュする可能性があります。私たちのフォーマッターは貼り付けた瞬間に構文エラーをキャッチするので、問題を素早く発見できます。
構造検証にJSON Schemaを使用する
JSONを受け入れるAPIを構築している場合、単純な解析では不十分です。JSON Schemaを使用すると、期待される構造、型、制約を定義できます:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": { "type": "string", "minLength": 1 },
"age": { "type": "integer", "minimum": 0 },
"email": { "type": "string", "format": "email" }
},
"required": ["name", "email"]
}
これにより、必須フィールドの欠落、型の誤り、範囲外の値などをキャッチできます — 基本的なJSONの解析では絶対に発見できないものです。
一貫したdiffのためにキーをソートする
2つのJSONオブジェクトを比較する場合(コードレビューや設定のdiffなど)、ソートされていないキーはノイジーなdiffを生成します。私たちのフォーマッターを含む多くのフォーマッターは、オブジェクトキーをアルファベット順に再帰的にソートするオプションを提供しています。これは特に以下に役立ちます:
- バージョン管理の設定ファイル(意味のないdiffを減らす)
- デバッグ中のAPIレスポンスの比較
- 決定論的である必要があるテストスナップショット
実際のJSONデバッグシナリオ
APIレスポンスのデバッグ
curlリクエストを送信して、圧縮された1行のJSONが返ってきた場合、何が悪いかを理解するためにまず構造を確認する必要があります:
curl -s https://api.example.com/users/123 | jq '.'
またはレスポンスをJSONフォーマッターに貼り付けます。そうすることで、レスポンスの構造が間違っているか、フィールドが欠落しているか、値が予期しないものであるかを確認できます。
2つのJSONオブジェクトの比較
2つのAPIレスポンスが同一であるはずなのに何かが異なる場合。両方をソートされたキーでフォーマットしてdiffを実行します:
jq -S '.' response1.json > sorted1.json
jq -S '.' response2.json > sorted2.json
diff sorted1.json sorted2.json
-Sフラグはキーをアルファベット順にソートするので、構造的な違いがdiff出力にノイズを生成しません。
コピー&ペーストエラーの修正
同僚がJSONをSlackに貼り付けたところ、スマートクォートがコンテンツを壊してしまいました。フォーマッターに貼り付けると、エラー(直線クォートの代わりにカーリークォート)がハイライトされるので、何を修正すべきかが正確にわかります。
これは思ったより頻繁に起こります。チャットアプリ、ワードプロセッサ、一部のテキストエディターは"を自動的にカーリークォートに変換しますが、これはJSONでは無効です。
大きなJSONファイルからデータを抽出する
数メガバイトのJSONファイルを受け取ったが、その一部だけが必要な場合。何千行もスクロールする代わりに、jqを使って必要なものを正確に抽出します:
# 最初のユーザーのメールアドレスを取得
cat users.json | jq '.data.users[0].email'
# 全ユーザー名をフラットリストで取得
cat users.json | jq '[.data.users[].name]'
# ステータスでユーザーをフィルタリング
cat users.json | jq '[.data.users[] | select(.status == "active")]'
JSON vs 他のデータフォーマット
| プロパティ | JSON | YAML | XML | TOML |
|---|---|---|---|---|
| 可読性 | 良い | 優秀 | 普通 | 良い |
| コメント | なし | あり | あり | あり |
| データ型 | 基本 | 豊富 | 文字列ベース | 豊富 |
| ファイルサイズ | 小 | 小 | 大 | 小 |
| 解析速度 | 高速 | 中程度 | 低速 | 高速 |
| エコシステム | 巨大 | 大 | 大 | 成長中 |
JSONはその単純さと普遍的なパーサーサポートにより、API通信とデータ交換で優位です。YAMLはコメントと可読性が重要な設定ファイルに適しています。XMLはエンタープライズシステムとドキュメントフォーマットで依然として存在感を持ちます。TOMLは設定(RustのCargo、PythonのPyproject.toml)でシェアを伸ばしています。
セキュリティに関する考慮事項
サーバーサイドのフォーマッターに機密データを貼り付けない
一部のオンラインJSONフォーマッターは処理のためにデータをサーバーに送信します。APIキー、トークン、パスワード、個人データを扱っている場合は、ブラウザ内ですべてを処理するクライアントサイドのフォーマッターのみを使用してください。私たちのツールはすべてのフォーマットをローカルで行います — データが送信されることはありません。
JSONインジェクションに注意する
JSON入力を受け付けるアプリケーションを構築する場合は、常にデータを検証してサニタイズしてください。文字列を連結してJSONを構築しないでください:
// 危険 — JSONインジェクションのリスク
const json = '{"name": "' + userInput + '"}';
// 安全
const json = JSON.stringify({ name: userInput });
信頼できないデータに対するJSON.parseに注意する
JSON.parse()は一般的に安全です(eval()とは異なり)が、解析されたデータに予期しない型や構造がある場合があります。アプリケーションで使用する前に、解析されたJSONの形状を必ず検証してください。
今すぐ無料のJSONフォーマッターでJSONデータをフォーマットしましょう。ブラウザ内で完全に動作し、シンタックスハイライトをサポートし、貼り付けた瞬間にエラーをキャッチします。