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

Python Flask读取含对象数组的JSON文件报错求助

解决Flask中读取JSON对象数组的问题

1. 检查JSON文件的语法与格式

你提供的JSON示例包含"这类HTML转义字符,这不符合标准JSON规范——标准JSON要求直接使用双引号(")。如果实际文件中是这种转义后的内容,会直接导致json.loads解析失败。

修复方式:

  • 将文件中所有"替换为",确保JSON结构合法,正确格式示例:
[{"some": 1, "list": [{"one":1}]},{"some": 1, "list": [{"one":1}]}]
  • 可以通过打印文件内容排查语法问题:
with open("tests/mocks/lsplano_itens_pessoais.json", encoding="utf8") as f:
    print(f.read())  # 查看实际内容是否存在转义、引号不匹配或多余逗号等问题

2. 优化JSON读取代码

替换手动读取后解析的方式,直接使用json.load处理文件对象,既简化代码又避免读取不完整、编码适配等问题:

import json

with open("tests/mocks/lsplano_itens_pessoais.json", encoding="utf8") as f:
    ls_plano = json.load(f)

with语句会自动关闭文件,避免资源泄漏。

3. 验证文件路径正确性

确保文件路径tests/mocks/lsplano_itens_pessoais.json符合当前脚本的运行目录:

import os
print(os.getcwd())  # 打印当前工作目录,确认相对路径是否正确

若路径错误,改用绝对路径或调整相对路径层级。

4. 捕获具体错误定位问题

如果仍报错,捕获并打印错误详情,快速定位问题点:

import json
from json.decoder import JSONDecodeError

try:
    with open("tests/mocks/lsplano_itens_pessoais.json", encoding="utf8") as f:
        ls_plano = json.load(f)
except JSONDecodeError as e:
    print(f"JSON解析错误:{e},错误位置:{e.pos}")
except FileNotFoundError:
    print("文件不存在,请检查路径")
except Exception as e:
    print(f"其他错误:{str(e)}")

5. 处理映射函数的边界情况

你的处理代码中已通过if判断过滤空值,但需确保__map_ls_chassi等映射函数能接收空列表或None参数,避免内部逻辑抛出异常。

内容的提问来源于stack exchange,提问作者Angel Omar Rojas Pacheco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:20:34