mangiucugna/json_repair

Repair malformed JSON from LLMs, APIs, logs, and user input in Python.

What it solves

json_repair 旨在处理从 LLM、API 或日志获取数据时常出现的格式错误 JSON 字符串。它会修正常见的语法错误——如缺少引号、逗号位置错误、未闭合的括号以及杂散的文字——这些错误通常会导致标准 JSON 解析器如 json.loads() 失败。

How it works

该库基于 BNF 定义解析 JSON,并应用启发式算法纠正错误。它会自动添加缺失的括号、为缺少引号的字符串加上引号,并清理多余的空白或换行。默认情况下,首先尝试使用标准库的 json.loads() 进行严格解析,只有在失败时才回退到修复解析器。

Who it’s for

适用于构建依赖 LLM 生成 JSON 的 AI 应用的开发者,以及处理日志或用户输入等不可靠数据源、无法保证严格 JSON 合规性的场景。

Highlights

  • Drop-in Replacement: 可直接替代 json.loads()json.load() 使用。
  • Schema-Guided Repair: 支持 JSON Schema 或 Pydantic v2 模型,以填补缺失值、强制转换标量并剔除不允许的属性。
  • Streaming Support: 包含 stream_stable 模式,可在流式输出时保持部分 JSON 的稳定性。
  • Strict Mode: 提供 strict=True 选项,在结构问题上抛出错误而非自动修复。
  • CLI Tool: 提供命令行界面,可修复 JSON 文件或通过 stdin 管道数据。