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
相关产品推荐
相关产品推荐

