修復 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 輸出
標準方面即將到來的內容
兩項即將到來的 JavaScript 提案對 LLM 的 JSON 工作流程很重要: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 Payload)
- 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 修復工具
- 修復 JSON Unexpected Token 錯誤
- JSON 轉 JavaScript 物件轉換工具