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

使用Python加载JSON文件填充数据库时遭遇JSONDecodeError的问题求助

解决你的JSON解析错误问题

首先,咱们先搞定第一个导致Expecting value错误的核心问题:你在代码里连续调用了两次f.read()。文件对象的读取指针在第一次print(f.read())之后已经移到了文件末尾,第二次loads(f.read())读到的是空字符串,JSON解析器当然会报错说找不到有效内容啦。

修正这个问题很简单,把文件内容先存到一个变量里再重复使用:

from json import loads
import os.path as path

# 注意路径里的斜杠用/或者转义的\\,避免Windows路径解析问题
file_path = path.join(path.abspath("../Data"), "monsters.json")
with open(file_path, encoding='utf-8') as f:
    json_content = f.read()
    print(json_content)  # 只打印一次就好
    json_file = loads(json_content)

或者更简洁,直接用json.load()读取文件对象,省去手动读内容的步骤:

from json import load
import os.path as path

file_path = path.join(path.abspath("../Data"), "monsters.json")
with open(file_path, encoding='utf-8') as f:
    json_file = load(f)

接下来聊聊你后来遇到的Expecting ',' delimiter错误,这大概率是你添加的字符串清理操作搞坏了JSON结构。你用的strip("'<>() ")和replace('\'', '\"')完全没必要:

  • JSON本身允许字符串里包含单引号,不需要替换成双引号;
  • 替换操作会把文本里的合法单引号(比如英文撇号)改成双引号,而这些双引号没有转义,直接破坏了JSON的语法规则。

所以赶紧把这些多余的清理代码删掉!

如果删掉之后还是报逗号错误,那问题就出在你的JSON文件本身了。按照错误提示的位置line 25 column 604 (char 1244),找到对应位置检查:

  • 是不是某个键值对后面多了逗号?比如对象最后一个属性后面加了多余的逗号;
  • 是不是字符串里有未转义的双引号?比如HTML内容里如果有href="xxx"这类写法,要改成href=\"xxx\";
  • 检查Traits或Actions字段的HTML内容,是不是有引号没处理好,或者标签没闭合?

你也可以用Python自带的工具校验JSON文件,在命令行里运行:

python -m json.tool monsters.json

如果文件有语法错误,这个工具会直接告诉你错误位置和原因,比自己找方便多了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 19:52:42