You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自动补全闭合被意外截断的未终止JSON数据?

截断JSON自动补全方案

方法1:使用现成工具快速修复

  • 不想写代码可以直接用VS Code插件JSON Fix,安装后右键点击截断的JSON文件,选择「Fix JSON」即可自动补全所有未闭合的对象、数组、字符串结构,处理MB级的JSON文件也不会卡顿。
  • Node.js/前端开发场景可以用jsonrepair库,直接传入截断的JSON字符串即可返回合法JSON,示例代码如下:
import { repair } from 'jsonrepair'
// 输入被截断的JSON
const brokenJson = '{"id":123,"data":{"list":[{"name":"test","value":'
const fixedJson = repair(brokenJson)
// 输出修复后的合法JSON:{"id":123,"data":{"list":[{"name":"test","value":null}]}}
  • 命令行场景可以安装jsonrepair全局工具,执行jsonrepair 待修复文件路径 > 输出文件路径即可批量处理截断JSON。

方法2:手动实现简易补全逻辑(适合定制需求)

如果需要适配业务特殊规则,可以自己写几十行代码实现核心补全能力,逻辑如下:

  1. 初始化三个状态标记:objectDepth(对象大括号嵌套深度)、arrayDepth(数组中括号嵌套深度)、inString(是否处于字符串内部的布尔值)
  2. 逐字符遍历截断的JSON内容:
    • 遇到未被转义的双引号"时,翻转inString状态
    • 仅当inString为false时统计括号深度:遇到{则objectDepth +1,遇到}则objectDepth -1;遇到[则arrayDepth +1,遇到]则arrayDepth -1
  3. 遍历结束后先处理未闭合的字符串:如果inString为true,先在末尾补一个"
  4. 按剩余深度补全闭合括号:有几层arrayDepth就补几个],有几层objectDepth就补几个}
  5. 如果末尾存在未赋值的键(最后一个非空字符是:),可以补null作为默认值,避免语法错误

补充提示:如果你的截断JSON存在末尾多余逗号的问题,需要在补全括号前先移除最后一个非空的逗号,避免修复后的JSON仍然不合法。

内容的提问来源于stack exchange,提问作者mikemaccana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:45:02