首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >使用 json-repair 修复 llm 生成的 json 格式错误

使用 json-repair 修复 llm 生成的 json 格式错误

作者头像
Michael阿明
发布2026-03-25 13:57:12
发布2026-03-25 13:57:12
230
举报

当大模型生成json格式的输出时,有时候可能会出现缺少引号,单引号等问题,json-repair 可以很好的解决这个问题

参考了 json-repair 的官方文档以及其他相关资料,整理了这款JSON修复工具的主要用法。下面的表格和示例可以帮助你快速上手。https://pypi.org/project/json-repair/

主要功能/场景

核心方法/命令

简要说明

基础字符串修复

repair_json()

修复损坏的JSON字符串,返回修复后的字符串。

直接解析为对象

loads()

修复损坏的JSON并直接解析为Python对象(如字典、列表)。

命令行修复文件

json_repair <文件路径>

通过命令行工具直接修复文件中的JSON。

处理非ASCII字符

ensure_ascii=False

确保非拉丁字符(如中文)在输出中保持原样,不被转义。

性能优化

skip_json_loads=True

在已知输入必然损坏时跳过验证,提升大文件处理速度。

🛠️ 详细用法与示例

代码语言:javascript
复制
 pip install json-repair
1. 基础修复:repair_json

这是最核心的函数,用于修复格式错误的JSON字符串。

代码语言:javascript
复制
from json_repair import repair_json

# 示例1:修复缺失引号和单引号的JSON
bad_json_1 = "{ name: 'John' }"
fixed_json_1 = repair_json(bad_json_1)
print(fixed_json_1) 
# 输出:{"name": "John"}

# 示例2:修复缺少闭合括号的JSON
bad_json_2 = '{"response": {"intent": "query", "entities": [{"type": "location", "value": "北京"}'
fixed_json_2 = repair_json(bad_json_2)
print(type(fixed_json_2))  
# 输出:<class 'str'>
print(fixed_json_2)  
# 输出:{"response": {"intent": "query", "entities": [{"type": "location", "value": "\u5317\u4eac"}]}}
2. 直接解析为Python对象:loads

如果你想跳过"修复字符串->再解析"的步骤,可以直接使用 loads 方法,它一步到位返回Python对象。

代码语言:javascript
复制
import json_repair

# 直接从损坏的JSON字符串解析为Python字典
bad_json = "{'user': {'name': 'Alice', 'age': 25"
data = json_repair.loads(bad_json)
print(data["user"]["name"])  
# 输出:Alice
print(type(data))  
# 输出:<class 'dict'>


with open('bad-json.json') as f:
    fixed = json_repair.load(f)
    print(type(fixed))
    print(fixed)
# <class 'dict'>
# {'name': 'Michel\n\n阿明'}
3. 处理非ASCII字符(如中文)

默认情况下,json-repair 为了确保兼容性,可能会将非ASCII字符转义。如果你希望保留原字符,可以使用 ensure_ascii=False 参数。

代码语言:javascript
复制
from json_repair import repair_json

bad_json_with_chinese = "{'name':'Michel阿明'}"
fixed_json = repair_json(bad_json_with_chinese)
print(fixed_json)  
# 输出:{"name": "Michel\u963f\u660e"}
fixed_json = repair_json(bad_json_with_chinese, ensure_ascii=False)
print(fixed_json)  
# 输出:{"name": "Michel阿明"}
4. 使用命令行工具修复文件

当你的JSON损坏内容保存在文件里时,使用命令行工具会非常方便。

代码语言:javascript
复制
cat  bad-json.json
"{'name':'Michel

阿明'}"  你好
代码语言:javascript
复制
# 基础用法:修复文件并输出到终端
json_repair bad-json.json

# 直接修改原文件(注意:-i 会覆盖原文件)
json_repair -i bad-json.json

# 修复后保存到新文件,并指定缩进使格式美观
json_repair bad-json.json -o fixed.json --indent 4
在这里插入图片描述
在这里插入图片描述
5. 性能优化技巧

在处理非常大的损坏JSON文件时,可以考虑以下参数来提升性能。

代码语言:javascript
复制
from json_repair import repair_json

large_bad_json = "{'name': michael}"

# 跳过JSON验证步骤,直接开始修复
result = json_repair.loads(large_bad_json, skip_json_loads=True)
print(type(result), result)
# <class 'dict'> {'name': 'michael'}

💡 最佳实践与注意事项

异常处理:始终对修复操作使用 try-except,因为极端情况下可能修复失败。

代码语言:javascript
复制
from json_repair import repair_json, JSONRepairError

try:
    result = repair_json(questionable_json_string)
except JSONRepairError as e:
    print(f"JSON修复失败: {e}")
    result = {}  # 提供一个安全的默认值

希望这些示例能帮助你全面地使用 json-repair

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Michael阿明 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🛠️ 详细用法与示例
    • 1. 基础修复:repair_json
    • 2. 直接解析为Python对象:loads
    • 3. 处理非ASCII字符(如中文)
    • 4. 使用命令行工具修复文件
    • 5. 性能优化技巧
  • 💡 最佳实践与注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档