运行环境:Django+Python3.10
原因:
这个错误信息表示尝试使用了 JSONDecoder
类的 __init__
方法时提供了一个不被期望的关键字参数 encoding
。在 Python 3.9 以前的版本中,json.loads
和 JSONDecoder
支持 encoding
参数,用于指定解码 JSON 字符串使用的编码。然而,从 Python 3.9 开始,这个参数被移除了,因为 JSON 标准明确规定编码必须是 UTF-8,使得这个参数变得不再必要。
例如代码:
import json
# 假设你在调用 JSONDecoder 时使用了 encoding 参数
decoder = json.JSONDecoder(encoding='utf-8')
import json
# 假设你在调用 json.loads 时使用了 encoding 参数
data = json.loads(some_json_string, encoding='utf-8')
运行会报错!
解决方式:
移除encoding
参数的使用
更改为:
import json
# 使用 JSONDecoder 时不带 encoding 参数
decoder = json.JSONDecoder()
# 或在调用 json.loads 时不带 encoding 参数
data = json.loads(some_json_string)
测试运行正常!