JSON と JavaScript オブジェクトリテラルの違い
JSON は JavaScript オブジェクトリテラルに似ていますが、より小さく、より厳格で、実行可能な値を含 まないデータフォーマットです。
短いまとめ
JavaScript のオブジェクトリテラルはソースコードです。JSON はデータ交換のためのフォーマットです。重なりは大きく、混同しがちですが、ルールは違います:JSON のキーと文字列はダブルクォート必須、コメントは無し、関数・undefined・NaN・Infinity・Date オブジェクト・正規表現は表現できません。
有効な JSON 値
JSON ドキュメントには、オブジェクト・配列・文字列・数値・真偽値・null のいずれかを置けます。文字列はダブルクォートを使い、オブジェクトのキーもダブルクォートの文字列でなければなりません。数値は 16 進記法、NaN、Infinity、数値セパレータなど JavaScript 専用の形式は使えません。
- 有効な JSON 文字列:"hello"
- 有効な JSON 真偽値:true
- 有効な JSON null:null
- 有効な JSON オブジェクトキー:"name"
JavaScript としては有効だが JSON としては無効
{ name: 'Ada', active: true, createdAt: new Date(), onSave() { return true }, tags: ['dev',], }
対応する有効な JSON
{ "name": "Ada", "active": true, "createdAt": "2026-05-13T00:00:00.000Z", "tags": ["dev"] }
API が JavaScript っぽいデータを拒否する理由
API サーバは通常、リクエストボディを JSON パーサで解析し、JavaScript エンジンでは解析しません。これはセキュリティと相互運用性の利点です:どの言語もコードを実行せずに同じデータを解析できます。本文にコメント、メソッド、undefined、new Date() などが含まれると、サーバは安全にデータとして扱えません。
安全に変換する方法
実行可能な値や言語固有の値を、純粋なデータに置き換えてください。日付は文字列に、欠損値は null またはキーを省略、コメントはドキュメント側に移し、関数はストラテジー名や型の値のような明示的なデータフィールドで表現します。
JSON 修復ガイド
トピックハブ
- JSON Parse Errors: Read the Message, Jump to the Fix
- Fix Invalid JSON: From 'What's Wrong' to a Clean File
- JSON Formatter, Validator, Viewer: Pick the Right Tool
- Repair LLM JSON Output: Handling Almost-JSON from AI
- Privacy: JSON Tools That Don't Leave Your Browser
- JSON Interop: YAML, CSV, XML, JWT, Schema
個別ガイド
- Base64 文字列のデコード方法(および JWT ペイロード)
- URL エンコーディング:クエリパラメータとパスをパーセントエンコードする
- YAML を JSON に変換(インデントエラーを避ける)
- JSON を CSV に変換:オブジェクト配列をフラット化
- JSON を XML に変換:ルート要素・属性・配列
- JSON を文字列リテラルとしてエスケープ(二重エンコードされた JSON のデコード)
- JSON の末尾カンマを修正
- JSON のシングルクォートを修正
- JSON の引用符なしキーを修正
- LLM が出力した JSON を修復する
- JSON 解析エラー「Expected Property Name」を修正
- API リクエスト前に JSON を検証する
- JSON フォーマッタ vs JSON Repair
- JSON の Unexpected Token エラーを修正
- JSON から JavaScript オブジェクトへの変換ツール