📋

JSON フォーマッター&バリデーター よくある質問

Q: JSONフォーマッターとは何ですか?

A: JSONフォーマッターとは何ですか?

JSONフォーマッターは、生の、縮小化された、または整形が不十分なJSONデータを受け取り、適切なインデント、改行、スペーシングを加えて再フォーマットし、人間が読みやすい形式にするツールです。ほとんどのJSONフォーマッターには検証、構文ハイライト、エラー検出も含まれており、キー並べ替え、縮小化、ツリービューによるナビゲーションなどの追加機能を備えているものもあります。当サイトの無料のオンラインJSONフォーマッターは、フォーマットと検証を1つのツールに統合し、詳細なエラーレポート付きの即時でクリーンな出力を提供します。

Q: 私のJSONが無効なのはなぜですか?

A: 私のJSONが無効なのはなぜですか?

JSONは、JSON仕様の厳格な規則に違反すると無効になります。最も一般的な原因は次のとおりです:

  • オブジェクトまたは配列の最後の要素の後にある末尾のカンマ
  • オブジェクトのキーや文字列の値が二重引用符で囲まれていない
  • 二重引用符の代わりに使われる一重引用符(JSONでは一重引用符は有効ではありません)
  • 文字列内のエスケープされていないバックスラッシュや引用符などのエスケープされていない特殊文字
  • undefinedNaNInfinityなどの無効な値(JSONに相当するものはありません)
  • {/}[/]が正しく対応していない、一致しない波括弧または角括弧

JSONバリデーターを使用して、構文エラーの正確な位置と性質を特定してください。ほとんどのバリデーターは、最初に見つかった問題について行、列、および説明的なエラーメッセージを報告します。

Q: JSONとJavaScriptオブジェクトの違いは何ですか?

A: JSONとJavaScriptオブジェクトの違いは何ですか?

JSONの構文はJavaScriptのオブジェクトリテラル構文から派生したものですが、両者は同じものではありません。主な違いは次のとおりです:

  1. キーは二重引用符で囲む必要があります -- JSONでは{"key": "value"}が必要ですが、JavaScriptでは{key: "value"}(引用符なし)や{'key': 'value'}(一重引用符)が許可されます。
  2. 文字列の値は二重引用符を使用する必要があります -- JSONでは文字列に二重引用符のみが許可されます。JavaScriptは一重引用符と二重引用符の両方を受け入れます。
  3. 末尾のカンマは禁止 -- JSONでは最後の要素の後の末尾カンマを禁止しています。JavaScriptでは許可されます。
  4. データ型が限られている -- JSONは文字列、数値、ブール値、null、オブジェクト、配列のみをサポートします。JavaScriptオブジェクトには関数、undefinedDateMapSet、その他の特別な型を含めることができます。
  5. コメント不可 -- JSONはコメントをサポートしていません。ソースコード内のJavaScriptオブジェクトにはコメントを付けることができます。

つまり、JavaScriptオブジェクトをそのまま書いてJSONと呼ぶことはできません。JSON.stringify()でシリアライズするか、厳格なJSON規則に従って記述する必要があります。

Q: JSONにコメントを付けることはできますか?

A: JSONにコメントを付けることはできますか?

いいえ、公式のJSON仕様(RFC 8259)はコメントをサポートしていません。JSONは最小限で言語に依存しないデータ交換フォーマットとして設計されており、パーサーを言語間でシンプルかつ一貫性のあるものに保つために、コメントは意図的に除外されました。

コメントが必要な場合の選択肢はいくつかあります:

  • JSONC(コメント付きJSON) -- VS Codeなどのツールが設定ファイルに使用しています。JSONCは//行コメントと/* */ブロックコメントを許可します。
  • YAMLまたはTOML -- コメントをネイティブにサポートする代替の設定フォーマット。
  • 規約ベースのメタデータ -- 人間が読めるメモを保存するために、JSONオブジェクトに"_comment""//"のようなキーを使用します。これはペイロードにデータを追加することに注意してください。
  • パース前にコメントを除去する -- 厳格なパーサーにJSONを渡す前に、コメントを除去する前処理ステップを使用します。

Q: オンラインでJSONを検証するにはどうすればよいですか?

Q: オンラインでJSONを検証するにはどうすればよいですか?

A: オンラインでJSONを検証するにはどうすればよいですか?

オンラインでJSONを検証するのは簡単です:

  1. JSONデータをコピーする
  2. JSONバリデーターツールに貼り付ける
  3. 検証またはフォーマットボタンをクリックする
  4. ツールが有効なJSONを報告するか、問題の正確な場所と説明を示すエラーを表示します

優れたJSONバリデーターは次のことを行うべきです:

  • 公式のJSON仕様(RFC 8259)に従って構文を検証する
  • エラーの行番号と列番号を表示する
  • 何が問題かを説明する説明的なエラーメッセージを提供する
  • 同時にJSONをフォーマットして美化することもできる
  • 異なるデータ型ごとに色分けして構文をハイライトする

大きなデータや機密データの場合、多くのオンラインバリデーターはブラウザ内のクライアントサイドで全てを処理するため、データがマシンの外に出ることはありません。

Q: 縮小化されたJSONとはどういう意味ですか?

A: 縮小化されたJSONとはどういう意味ですか?

縮小化されたJSONとは、不要な空白をすべて除去したJSONです -- スペース、タブ、改行、インデントが取り除かれます。結果は単一行(または非常に少ない行数)のコンパクトなテキストになります:

{"users":[{"id":1,"name":"Alice","roles":["admin"]}],"total":1}

縮小化されたJSONが本番環境で使用される理由はいくつかあります:

  • ファイルサイズの削減 -- ペイロードサイズを30〜50%以上削減できる
  • より高速なネットワーク転送 -- 送信データが少ないほどレイテンシが低くなる
  • 帯域幅コストの削減 -- トラフィックの多いAPIやモバイルアプリケーションで特に重要

トレードオフとして、縮小化されたJSONは人間には実質的に読めません。JSONプリティプリントツールを使用して、縮小化されたJSONをデバッグや検査用の読みやすい構造に再フォーマットしてください。

Q: コマンドラインでJSONをプリティプリントするにはどうすればよいですか?

A: コマンドラインでJSONをプリティプリントするにはどうすればよいですか?

JSONをプリティプリントできるコマンドラインツールはいくつかあります:

jqを使用する場合(最も人気、別途インストールが必要):

cat file.json | jq .

Pythonを使用する場合(ほとんどのシステムに組み込み):

python -m json.tool file.json

Node.jsを使用する場合:

node -e "const d = require('./data.json'); console.log(JSON.stringify(d, null, 2));"

curlを使用する場合(APIレスポンスのプリティプリント):

curl https://api.example.com/data | jq .

jqツールは、色付き出力、クエリ機能、堅牢なエラー処理の点で推奨されます。

Q: JSON Schemaとは何ですか?

A: JSON Schemaとは何ですか?

JSON Schemaは、JSONドキュメントに注釈を付け、検証できるようにするボキャブラリです。JSONドキュメントが満たさなければならない構造、データ型、制約を定義します。JSONデータの契約書または仕様書のようなものと考えてください。

JSON Schemaの主な機能:

  • 型の検証 -- 値が文字列、数値、ブール値、配列、オブジェクト、またはnullのいずれであるかを指定する
  • 必須フィールド -- 特定のプロパティを必須としてマークする
  • 値の制約 -- 最小値/最大値、文字列パターン(regex)、許可される値(enum)を設定する
  • 配列の検証 -- 配列の長さ、要素の型、一意性を制御する
  • ネストされた検証 -- ネストされたオブジェクトと配列のスキーマを定義する
  • 条件付き検証 -- 他のフィールドの値に基づいて異なるルールを適用する

JSON Schemaの例:

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "required": ["name", "email"],
  "properties": {
    "name": { "type": "string", "minLength": 1 },
    "email": { "type": "string", "format": "email" },
    "age": { "type": "integer", "minimum": 0, "maximum": 150 }
  }
}

JSON Schemaは、APIリクエストボディ、設定ファイル、サービス間のデータ交換契約の検証に一般的に使用されます。

JSON フォーマッター&バリデーター よくある質問 - CoolTool