JSON パーサー
JSON(JavaScript Object Notation)はWeb APIおよび設定ファイルの標準データ交換フォーマットです。このツールはJSONを解析、検証、整形表示し、ネストされた構造を探索するためのインタラクティブツリービューを提供します。JSONとYAMLやTOMLなどの他のフォーマット間の変換も可能です。
仕様
よくあるユースケース
- デバッグのためにミニファイされたAPIレスポンスをフォーマット
- デプロイ前のJSON設定ファイルの検証
- ドキュメント用にAPIレスポンスをYAMLに変換
- NoSQLデータベースからの深くネストされたデータ構造の探索
- PostmanやcurlなどのAPIテストツール用のJSONペイロードの準備
機能
- 明確なエラーメッセージと行番号付きのJSON構文検証
- 2スペースインデントで整形表示
- コンパクトな保存や転送のためにJSONをミニファイ
- YAML、TOML、またはXML形式に変換
- 折りたたみ可能なノード付きインタラクティブツリービュー
- 個別の値またはサブツリーのコピー
例
API Response
試してみる →A typical REST API response with nested objects and arrays.
{
"users": [
{
"id": 1,
"name": "Alice",
"email": "alice@example.com"
},
{
"id": 2,
"name": "Bob",
"email": "bob@example.com"
}
],
"total": 2
}Application Configuration
試してみる →Nested configuration with database and cache settings.
{
"database": {
"host": "localhost",
"port": 5432,
"name": "myapp"
},
"cache": {
"enabled": true,
"ttl": 3600
}
}ヒント
- JSONキーはダブルクォートされた文字列でなければなりません。シングルクォートは無効です。
- 最後の要素の後のトレーリングカンマは標準JSONでは許可されていません。
- コメント付きJSONには、代わりにJSONCパーサーを使用してください。
解説 JSON パーサー
JSON(JavaScript Object Notation)はモダンWebの汎用データ交換フォーマットです。RFC 8259およびECMA-404で定義され、JSONは6つの型(文字列、数値、ブール値、null、配列、オブジェクト)を使用して構造化データを表現します。そのシンプルさと事実上すべてのプログラミング言語のデータ構造への直接的なマッピングにより、REST API、設定ファイル、ドキュメントデータベース、サービス間通信のデフォルトフォーマットとなっています。
JSONの構文はJavaScriptオブジェクトリテラル記法の厳密なサブセットですが、重要な制約があります: キーはダブルクォートされた文字列でなければならず、トレーリングカンマは許可されず、コメントはサポートされません。これらの制約により、実装間での曖昧さのない解析が保証されます。有効なJSONドキュメントのルート要素はオブジェクトまたは配列でなければなりません(RFC 8259は技術的にはトップレベルに任意のJSON値を許可していますが、ほとんどのAPIはオブジェクトまたは配列を期待します)。
Web開発において、JSONはRESTおよびGraphQL APIの標準リクエスト・レスポンスフォーマットです。ブラウザはネイティブのJSON.parse()およびJSON.stringify()メソッドを提供し、fetch APIには.json()コンビニエンスメソッドが含まれます。Node.js、Python(Flask、Django)、Go、その他の言語のサーバーフレームワークにはすべて組み込みのJSONシリアライゼーションが含まれています。MongoDB、CouchDB、DynamoDBなどのドキュメントデータベースはデータをJSONまたはJSON系フォーマット(MongoDBのBSON)でネイティブに保存します。
JSONの制限がいくつかの拡張と代替を生み出しました: JSONCは設定ファイル用にコメントを追加、JSON5は構文ルールを緩和、JSON Lines(JSONL/NDJSON)はストリーミング用に1行に1つのJSONオブジェクト、JSON Schemaはドキュメント構造の検証語彙を提供します。バイナリ効率のため、BSON、MessagePack、CBORなどのフォーマットがコンパクトなJSON互換シリアライゼーションを提供します。これらの代替にもかかわらず、普遍的なツールサポートと人間の可読性により、プレーンJSONが支配的なフォーマットとして残っています。
JSONは意図的にコメントをサポートしていません。このフォーマットを普及させたDouglas Crockfordは、シンプルに保つためと、XMLで起こったような解析ディレクティブへの誤用を防ぐためにコメントを除外しました。インラインドキュメントが必要な設定ファイルには、JSONC(JSON with Comments)がVS Code、TypeScript、ESLintなどのツールでネイティブにサポートされています。YAMLとTOMLも、設定ファイルがコメント、複数行文字列、または明確なセクションヘッダーの恩恵を受ける場合の強力な代替です。
JavaScriptに起源を持つにもかかわらず、JSONはJavaScriptオブジェクトリテラルと同じではありません。JSONは厳格な構文ルールを強制します: すべてのキーはダブルクォートされ、ダブルクォートされた文字列のみ許可され、トレーリングカンマは禁止され、undefinedや関数のような値は表現できません。JSON.parse()はJSON文字列をJavaScriptオブジェクトに変換し、JSON.stringify()はオブジェクトをJSON文字列にシリアライズします。すべてのJavaScriptオブジェクトがJSONを通じてラウンドトリップできるわけではありません。関数、undefined、Infinity、循環参照を含むものはシリアライゼーション中にデータを失うかエラーをスローします。
数メガバイトを超えるJSONファイルの場合、ドキュメント全体を一度にメモリにロードするとパフォーマンスの問題が発生する可能性があります。ストリーミングパーサー(JavaScript用のclarinetやoboe.js、Python用のijsonなどのSAXスタイルライブラリ)は構造全体をバッファリングせずにドキュメントをインクリメンタルに処理します。JSON Lines(JSONL)フォーマットでは各行が個別のJSONオブジェクトであるため、レコードを1つずつ処理でき、大規模データセットに最適です。大きなレスポンスを返すAPIは、個々のレスポンスサイズを管理可能に保つためにページネーションを実装すべきです。JSONと他のフォーマットの選択において、JSONはすべての言語とツールが追加の依存関係なしにサポートするため、API通信とデータ交換の最も安全なデフォルトです。YAMLはKubernetesマニフェストやCI/CDパイプラインなど、人間が編集する設定に優れています。TOMLはCargo.tomlやpyproject.tomlのように、明示的なセクションヘッダーとシンプルなキーバリューペアの恩恵を受けるアプリケーション設定に最適です。