オンラインで JSON をフォーマット・検証する方法

· 7 分で読めます

API、設定ファイル、または構造化データのあらゆる種類で作業する場合、JSON を定期的に扱います。そして、欠落しているブラケットを見つけようと最小化された JSON の壁を見つめたことがあるなら、フォーマットが重要な理由を知っています。ブラウザベースのフォーマッタは、データをサーバーにアップロードせず、すべての作業をローカルで処理します。

JSON フォーマットがすること

API レスポンスや最小化されたファイルからの生 JSON は次のようになります:

{"users":[{"name":"Alice","age":30,"roles":["admin","editor"]},{"name":"Bob","age":25,"roles":["viewer"]}]}

フォーマッタはそれを読みやすいものに変換します:

{
  "users": [
    {
      "name": "Alice",
      "age": 30,
      "roles": ["admin", "editor"]
    },
    {
      "name": "Bob",
      "age": 25,
      "roles": ["viewer"]
    }
  ]
}

同じデータですが、実際に読み取り、エラーを見つけ、構造を理解できるようになりました。

オンラインで JSON をフォーマットする方法

  1. JSON を貼り付け: 入力フィールドに貼り付けます。フォーマッタは即座に構文エラーを検出し、構造を検証します。
  2. インデントを選択: 2 または 4 スペースを選ぶか、Minify をクリックして JSON を 1 行に圧縮します。
  3. 結果をコピー: フォーマットされた出力には色分けされた構文ハイライトが含まれます。コード、設定ファイル、またはドキュメントで使用するためにコピーします。

JSON の簡単な歴史

JSON(JavaScript Object Notation)は Douglas Crockford によって 2001 年に仕様化され、2006 年に RFC 4627 で正式に文書化され、2013 年に ECMA-404、2017 年に ISO/IEC 21778 として標準化されました。Crockford は JSON を発明したわけではありません: 既に使われていた JavaScript オブジェクトリテラル構文のサブセットから抽出し、名前と json.org の 1 ページの仕様を与えました。

JSON は劇的にシンプルだったため、ウェブ API で XML を急速に取って代わりました。XML レスポンスは開始/終了タグで冗長ですが、同等の JSON はサイズの半分です。ブラウザは XML パーサーなしで JSON をネイティブに解析できます(JSON.parse、JSON.stringify は 2009 年の ECMAScript 5 以降)。

2015 年までに、世界のすべての主要 API が JSON を話しました: REST API、GraphQL クエリ、WebSocket メッセージ、設定ファイル(package.json、tsconfig.json、.vscode/settings.json)、さらにはデータベース(PostgreSQL JSONB、JSON のような MongoDB BSON)。ウェブ上の構造化データの共通言語になりました。

JSON のシンプルさはその制限でもあります: コメントなし、末尾カンマなし、日付型なし、バイナリサポートなし。これらのギャップに対処するために、いくつかの JSON バリアントが登場しました(下記の「代替 JSON 風フォーマット」を参照)。

よくある JSON エラーと見つけ方

ほとんどの JSON エラーは、いくつかの一般的な間違いに帰着します:

良いフォーマッタはエラーがどこにあるかを正確にハイライトするので、推測する代わりに即座に修正できます。

JSON データ型

JSON にはちょうど 6 つのデータ型があります:

注記
文字列"hello"常に二重引用符、\n\t\\\"\uXXXX をサポート
数値423.14-1e10NaN や Infinity なし、先頭ゼロなし
ブール値truefalse小文字のみ
nullnull小文字のみ
配列[1, 2, 3]順序付き、任意の型、カンマ区切り
オブジェクト{"key": "value"}キーは引用符付き文字列、カンマ区切り

特に欠けているもの: 日付(ISO 8601 文字列を使用)、バイナリデータ(Base64 文字列を使用)、コメント(別のドキュメントフィールドを使用)、bigint(JSON 数値は倍精度、2^53 以上の値は精度を失います)。

フォーマットと最小化を使い分け

フォーマット(整形表示)は次の場合に必要:

最小化は次の場合に必要:

サイズの違いは重要です: 典型的な 50 KB の整形 JSON は最小化で約 30 KB になります。高トラフィック API では、最小化されたレスポンスが帯域幅を節約します。人間が編集するファイルには、フォーマット済みが不可欠です。

代替 JSON 風フォーマット

JSON の厳密さが問題のとき、いくつかのバリアントがルールを緩和します:

フォーマットJSON への追加最適な用途
JSON5コメント、末尾カンマ、単一引用符、引用符なしキー人間が編集する設定ファイル
JSONCコメントのみ(// と /* */)VS Code 設定、tsconfig.json
HJSONコメント、引用符なし文字列、複数行文字列人間に優しい設定
JSON Lines(NDJSON)行ごとに 1 つの JSON オブジェクト、囲み配列なしログファイル、ストリーミング
YAMLインデントベース、コメント、アンカー、参照Kubernetes、GitHub Actions
TOMLINI 風構文、日付、コメントCargo.toml、pyproject.toml
BSON追加型(Date、ObjectId、Binary)付きバイナリ JSONMongoDB 内部ストレージ
CBOR(RFC 8949)サイズに最適化されたバイナリフォーマット制約のあるデバイス API
MessagePackバイナリ JSON 風、コンパクト内部 API シリアル化

データ交換(API レスポンス、設定)には、厳密な JSON を使用してください。人間が編集する設定には、JSON5 や JSONC がより親しみやすいです。データストリーミングには、NDJSON がデファクト標準です。

よくある落とし穴

JSON 作業のヒント

プライバシーと機密 JSON

JSON フォーマッタは完全にブラウザ内で動作します。貼り付ける JSON、中間処理、フォーマットされた出力のすべてがデバイス上に残ります。サーバーへのアップロードも、ログ記録も、誰かとの共有もありません。

これが重要なのは、JSON が非常に機密性の高いデータを含むことがよくあるからです: 顧客レコードとメールアドレスを含む API レスポンス、認証トークンとセッションデータ、製品アーキテクチャを明らかにする内部 API スキーマ、データベースパスワード付き設定ファイル、会計 API からの財務データ、FHIR API からの医療記録、HR API からの内部企業構造、インフラを明らかにするスタックトレース付きデバッグペイロード。クラウド JSON フォーマッタはすべての貼り付けをリクエストログに記録し、「サービス改善」のために保持することがあり、貼り付けられた API レスポンスが顧客データと API キーを漏洩した実際のインシデントに関与してきました。ブラウザベースのフォーマッタはエクスポージャーがゼロです: JSON は決してマシンを離れません。

ブラウザベースのフォーマットは、ページが読み込まれた後はオフラインでも機能します。飛行機内、インターネットアクセスのないセキュア環境、またはサードパーティサービスに API データ(特に資格情報が埋め込まれているもの)を貼り付けることができない、すべきでない場所での JSON フォーマットに便利です。

よくある質問

フォーマッターは大きな JSON ファイルを扱えますか?

はい。ツールはブラウザ内で動作するため、数万行のファイルでも処理できます。性能はデバイス次第ですが、最新のブラウザならほとんど問題なく大きな JSON を扱えます。

オフラインで動作しますか?

はい。ページを読み込んだ後はインターネット接続なしにブラウザ内で完全に動作します。すべての処理は JavaScript でローカルに行われます。

フォーマットと検証の違いは何ですか?

フォーマットはインデントと改行を加えて JSON を読みやすくします。検証は JSON の構造が正しいか, カッコが揃っているか、引用符が正しいか、型が有効か, をチェックします。ほとんどのフォーマッターは両方を同時に行います。

スマートフォンでも使えますか?

はい。ツールはモダンなブラウザを搭載した端末ならどれでも動作します。スマートフォンやタブレットでも使えます。