LLM の JSON 出力を修復:AI からの「ほぼ JSON」を扱う
LLM は ```json フェンスで囲まれた JSON を、単一引用符、Python リテラル、引用符なしのキーとともに返すことがよくあります。構文を修復し、厳格に検証し、クリーンアップした出力から TypeScript の型を導きます。
ここに来たら
LLM が JSON.parse に拒否される JSON を返しました。最も多い原因は、ドキュメント全体を囲む markdown コードフェンス、単一引用符、引用符なしのキー、True/None のような Python リテラル、そして文字列化されたオブジェクトです。構文を修復し、結果をアプリに渡す前に厳格に検証しましょう。
LLM 出力のための修復ワークフロー
まず修復を実行します —— フェンス、単一引用符、引用符なしのキー、Python リテラル、末尾カンマを許容します。次に検証して、クリーンアップしたテキストが往復することを確認します。クリーンアップしたツリーを使って型を導いたり、アプリに渡したりします。
LLM の JSON 出力を修復(ガイド)JSON の引用符なしキーを修正JSON の単一引用符を修正JSON を文字列リテラルとしてエスケープJavaScript で壊れた JSON を修復JSON をオンラインで修復(完全なウォークスルー)
パースできたら、型を導く
LLM の出力が検証を通過したら、TypeScript インターフェースや JSON Schema を導き、次の呼び出しが検証できる契約を持つようにします。これが一度だけ修復することと、永遠に修復し続けることの違いです。
JSON から TypeScript インターフェースJSON から JavaScript オブジェクト変換(ガイド)単一引用符 vs JavaScript オブジェクトリテラルJSON 内の不正なエスケープ文字Unexpected end of JSON inputJSON.parse ソースアクセス:可逆な数値とより安全な LLM 出力
標準で近づいているもの
LLM の JSON ワークフローにとって、2 つの来たる JavaScript 提案が重要です:JSON.parse ソースアクセス(エラーを元のテキストと値とともに読む)と JSON.parseImmutable です。これらは、あらゆるアプリに存在する独自の修復コードの量を減らします。
JSON.parse ソースアクセス(Baseline 2025)深掘り:実践での JSON.parse ソースアクセスJSON.parseImmutable(Stage 2)オンライン JSON フォーマッターのデータ漏えい —— 機密を貼り付けない
推奨ルート
LLM 出力を貼り付け、クリーンアップし、型を付ける。
-
- ツール:/ —— AI 出力を貼り付け、「修復して整形」をクリック。
-
- ガイド:/guides/repair-llm-json-output —— フェンス、引用符、Python リテラルを処理。
-
- ブログ:/blog/repair-broken-json-in-javascript —— 同じワークフローをコードで。
-
- リファレンス:/news/json-parse-source-access-baseline-2025 —— 近づいている標準サポート。
JSON 修復ガイド
トピックハブ
個別ガイド
- Base64 文字列のデコード方法(および JWT ペイロード)
- URL エンコーディング:クエリパラメータとパスをパーセントエンコードする
- YAML を JSON に変換(インデントエラーを避ける)
- JSON を CSV に変換:オブジェクト配列をフラット化
- JSON を XML に変換:ルート要素・属性・配列
- JSON を文字列リテラルとしてエスケープ(二重エンコードされた JSON のデコード)
- JSON の末尾カンマを修正
- JSON のシングルクォートを修正
- JSON の引用符なしキーを修正
- LLM が出力した JSON を修復する
- JSON 解析エラー「Expected Property Name」を修正
- JSON と JavaScript オブジェクトリテラルの違い
- API リクエスト前に JSON を検証する
- JSON フォーマッタ vs JSON Repair
- JSON の Unexpected Token エラーを修正
- JSON から JavaScript オブジェクトへの変換ツール