修复 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 对象转换器