一款零依赖的 Go 库,专为自动检测并修复大语言模型(LLM)生成的不规范或损坏的 JSON 数据而设计,支持 API 调用和命令行工具。
项目简介#
json-repair 是一个专门解决 LLM 输出 JSON 格式异常的 Go 语言工具库。在使用大语言模型进行 Function Calling 或文本生成时,模型输出的 JSON 经常存在格式错误,导致标准 JSON 解析器失败。json-repair 能够自动修复这些问题,提高系统鲁棒性。
核心能力#
支持修复的 JSON 问题#
- 单引号字符串 → 自动转换为双引号
- 混合引号字符串
- 未闭合的数组/对象 → 自动补全
],} - 格式错误的字面量(TRUE, FALSE, Null)→ 修复为正确大小写
- JSON 注释(
//或/* */)→ 自动剔除 - 字符串中的换行符
\n - Markdown 代码块标记(```json)
- 错误的键值对
- 字符串中包含链接
技术特性#
- 零依赖:仅使用 Go 标准库
- 鲁棒性设计:始终返回字符串结果,不会因错误而 panic
- 递归防护:最大递归深度限制(1000层),防止栈溢出
- 死循环检测:通过进度计数器检测无限循环
- Panic 恢复:使用 defer/recover 捕获异常
安装与使用#
Go 库安装#
go get github.com/RealAlexandreAI/json-repair
命令行工具安装#
brew install realalexandreai/tap-jsonrepair/jsonrepair
API 示例#
package main
import (
"github.com/RealAlexandreAI/json-repair"
)
func main() {
brokenJSON := "```json {'employees':['John', 'Anna', ```"
fixedJSON, _ := jsonrepair.RepairJSON(brokenJSON)
// 输出: {"employees":["John","Anna"]}
}
核心 API#
RepairJSON(src string) (dst string, err error)- 标准修复接口MustRepairJSON(src string) (dst string)- 简化接口,不返回 errorJSONMarshal(t any) ([]byte, error)- 增强序列化,保留 HTML 字符不转义
CLI 使用#
jsonrepair -i "{'test': 'value',"
jsonrepair -f broken.json
cat broken.json | jsonrepair
应用场景#
- LLM 应用后处理:清洗 ChatGPT、Claude 等模型返回的 JSON 数据
- Agent 工作流:确保多智能体系统中 JSON 消息传递的有效性
- Function Calling:处理 OpenAI 等平台的函数调用返回数据
- 数据清洗 ETL:修复存储的损坏 JSON 日志或数据文件