简介
文档:https://pypi.org/project/json-repair/
功能特性
它可以:
- 修复 JSON 中的语法错误:缺少引号、逗号位置错误、未转义字符、键值对不完整、格式错误的值(true/false/null)以及损坏的键值结构。
- 修复格式错误的 JSON 数组和对象:通过添加必要的元素或默认值(null/'')来修复不完整或损坏的结构。能够处理包含额外非 JSON 字符(如注释)的数据。
- 缺失 JSON 值的自动补全:自动用合理的默认值填充缺失字段。
使用方式
1. 基础修复
from json_repair import repair_json
# 将坏的 json 字符串修复为好的字符串
good_json_string = repair_json(bad_json_string)
2. 替代 json.loads()
import json_repair
# 直接解析为对象
decoded_object = json_repair.loads(json_string)
3. 直接返回对象
import json_repair
# True 是直接返回对象,而不是 json 字符串
decoded_object = json_repair.repair_json(json_string, return_objects=True)
示例
import json
from json_repair import repair_json
# 1. 单引号问题
broken_json = "{'name': 'Alice', 'age': 20}"
# 2. 数组末尾多余逗号
broken_json = '[1, 2, 3, ]'
# 3. 包含注释
broken_json = ''' { // 这是一条注释 "id": 123, "desc": "test" /* 这是另一条注释 */ } '''
# 4. LLM 返回不规范
bad_json_string = '你好,这是我按照 json 格式返回的数据:{"name": "John", "age": 30, "city": "New York"'
good_json_string = repair_json(bad_json_string)
data = json.loads(good_json_string)
print(data)
开发误区
不要先调用 json.loads() 再尝试修复,因为 json_repair 会自动验证 JSON 是否有效。如果仍需验证,可添加 skip_json_loads=True。

