You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用json模块解析JSON报错时如何获取错误字符位置

获取JSON解析错误位置的实现方法

Python内置json模块抛出的JSONDecodeError异常本身就内置了错误位置属性,不需要自行解析错误字符串,也不存在内置的json.get_error()方法,直接捕获异常读取属性即可:

import json

try:
    json.loads(my_json)
except json.JSONDecodeError as e:
    error_loc = e.pos  # 直接获取报错的字符偏移量,就是你需要的233450这类数值
    error_line = e.lineno # 同步可获取报错对应的行号
    error_col = e.colno # 同步可获取报错对应的列号

如果确实需要从错误提示文本中提取位置,异常对象的msg属性就是完整的错误描述字符串,可以自行用正则匹配char (\d+)片段拿到对应数值,不过这种方式稳定性差,不推荐使用——不同Python版本的错误提示文案可能调整,而pos/lineno/colno是稳定的公开属性。

针对脏JSON解析场景的实用技巧

  • 拿到错误位置后,可以直接切片取出报错点前后的上下文快速排查问题,比如执行print(repr(my_json[max(0, error_loc-30):error_loc+30]))就能看到报错位置前后30个字符的内容,不需要在超长文本里手动翻找位置。
  • 对于爬取得到的、存在大量未转义引号、尾逗号、多余括号这类问题的非标准JSON,不建议纯靠正则修复,容错解析库的适配效率更高:比如json5支持大部分非标准JSON语法,demjson3的容错模式可以自动修复大量常见格式错误,比手写正则的覆盖率高很多,也不容易出现误替换正常符号的问题。

内容的提问来源于stack exchange,提问作者eva bacas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 23:39:21