JSON から JavaScript オブジェクトへの変換ツール

厳密な JSON は JSON.parse で JavaScript オブジェクトに変換できます。JavaScript オブジェクトリテラルは、有効な JSON にするために事前のクリーンアップが必要です。

JavaScript で JSON を変換する

入力がすでに有効な JSON なら、最も安全なコンバータは JSON.parse(jsonText) です。コードを実行せずに、通常の JavaScript のオブジェクト・配列・文字列・数値・真偽値・null を返します。

JSON 入力

{ "name": "Ada", "active": true, "skills": ["math", "notes"] }

JavaScript での使い方

const user = JSON.parse(jsonText); console.log(user.name);

オブジェクトリテラル入力は別物

{ name: 'Ada', active: true } のような JavaScript オブジェクトリテラルは JSON ではありません。JSON.parse に通す前に、キーの無引用、シングルクォート、コメント、末尾カンマを修復してください。

eval を避けるべき場面

未知のテキストをオブジェクトにするために eval は使わないでください。eval はコードを実行します。JSON.parse はデータをパースするだけです —— だからこそ、API ペイロード、設定、ログ、貼り付けた例には厳格な JSON のほうが安全です。

エッジケース:日付・undefined・関数

JSON には Date、undefined、関数といった型がありません。日付は ISO 文字列で往復し、undefined は stringify で落ち、関数はそもそも表現できません。JavaScript オブジェクトにそれらが含まれていると、変換後の JSON は損失付きのスナップショットになります —— 必要なら JSON.parse の reviver 関数で型を明示的に復元してください。

TypeScript と型推論

JSON.parse は事前に形を知れないため 'any' を返します。型付きで扱いたいなら、zod や io-ts のようなスキーマ検証ライブラリで検証したうえで JSON.parse(text) as User と書くか、JSON to TypeScript ツールでサンプルからインターフェースを生成してください。

逆方向:オブジェクトから JSON

JSON.stringify(value, null, 2) は JavaScript の値から整形済みの JSON を作ります。undefined、関数、Symbol キーは黙って落とされ、循環参照は例外を投げます。第 2 引数に replacer 関数を渡すと、残すフィールドを制御できます —— 送信前に内部情報を取り除くのに便利です。