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

Python出现JSONDecodeError报错时如何定位出错的具体字符位置?

定位JSONDecodeError错误位置的方法

1. 直接输出错误位置上下文定位

json.loads报错给出的char索引从0开始计数,直接对原始字符串切片就能看到对应位置的内容,示例代码如下:

import json

# 替换为你自己的待解析JSON字符串
raw_json_str = '你的原始JSON字符串'
error_char_index = 1205

# 打印错误位置前后50个字符的上下文,方便定位场景
print("错误位置前50个字符:", raw_json_str[max(0, error_char_index - 50): error_char_index])
# 用repr()可以直接展示不可见控制字符的转义形式,不会被吞
print("错误位置的字符:", repr(raw_json_str[error_char_index]))
print("错误位置后50个字符:", raw_json_str[error_char_index + 1: min(len(raw_json_str), error_char_index + 51)])

2. 常见报错原因及修复

你提供的示例JSON本身就有两个容易触发该报错的问题:

  • 数组末尾多余逗号:results数组最后一个对象末尾多了逗号,JSON标准不允许数组/对象的最后一个元素后加逗号,需要删除。
  • 未转义的控制字符:如果字符串中包含换行、制表符、退格等不可见控制字符且没有做转义处理,就会触发控制字符非法报错。如果不需要严格校验可以加strict=False参数临时兼容:
parse_result = json.loads(raw_json_str, strict=False)

如果要彻底解决问题,还是建议根据上面的定位方法找到对应控制字符,手动转义或者删除处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:36:05