简介
在处理大模型(LLM)返回的数据时,我们常遇到 JSON 格式不规范的问题:缺少引号、逗号位置错误、包含注释或非标准字符。json-repair 库能自动修复这些语法错误,甚至处理损坏的键值结构。
它不仅能补全缺失的值(如用 null 或空字符串填充),还能清理多余的字符,确保输出为有效的 JSON 对象。
安装
pip install json-repair
核心用法
该库提供了三种主要的使用方式,可根据场景灵活选择。
1. 基础修复
将损坏的 JSON 字符串修复为标准字符串。如果输入本身就是有效字符串,则直接返回。
from json_repair import repair_json
good_json_string = repair_json(bad_json_string)
2. 替代 json.loads
可以直接用它替代标准的 json.loads(),无需手动捕获异常。
import json_repair
decoded_object = json_repair.loads(json_string)
3. 直接返回对象
设置 return_objects=True,解析器会直接返回 Python 对象,而不是 JSON 字符串,这在某些场景下更高效。
import json_repair
decoded_object = json_repair.repair_json(json_string, return_objects=True)
实战示例
下面是一个完整的处理流程,涵盖了单引号、多余逗号、注释干扰以及大模型输出噪声等常见情况。
import json
from json_repair import repair_json
# 场景 1: 单引号导致的无效 JSON
broken_json_1 = "{'name': 'Alice', 'age': 20}"
print(repair_json(broken_json_1))
# 场景 2: 数组末尾多余逗号
broken_json_2 = '[1, 2, 3, ]'
print(repair_json(broken_json_2))
# 场景 3: 包含注释的非法 JSON
broken_json_3 = '''{
// 这是一条注释
"id": 123,
"desc": "test" /* 这是另一条注释 */
}'''
print(repair_json(broken_json_3))
# 场景 4: 大模型返回带有前缀文本
bad_llm_output = '你好,这是我按照 json 格式返回的数据:{"name": "John", "age": 30, "city": "New York"}'
good_json_string = repair_json(bad_llm_output)
data = json.loads(good_json_string)
(data)

