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

Python插入JSON至MongoDB:实现无效JSON的错误捕获与提示

如何捕获JSON无效错误并提示解析失败(Python + MongoDB批量插入场景)

嘿,你已经把批量插入的核心逻辑搞定了,要处理无效JSON的话,其实只需要针对性捕获JSONDecodeError就行,我帮你调整下代码,顺便优化下异常提示的实用性:

修改后的完整代码

import sys, json, pymongo, glob
from pymongo import MongoClient
from bson import json_util
from json.decoder import JSONDecodeError

connection = MongoClient('localhost', 27017)
db = connection.Mysample
mycollection = db.Mynewsample
folder = 'C:/ESRILKA/Cloud Team/Tmobile/JSON To CSV Files/JSON files/*.json'
jsonFiles = glob.glob(folder)

for file in jsonFiles:
    with open(file) as template:
        try:
            # 先解析JSON,失败直接进入异常块
            template_dct = json.load(template)
            # 解析成功才执行插入
            result = db.Mynewsample.insert_one(template_dct)
            print(f'Inserted post id {result.inserted_id} from file: {file}')
        except JSONDecodeError as e:
            # 专门处理JSON格式无效的场景,输出你要的"解析失败"提示
            print(f"解析失败:文件 {file} 存在无效JSON格式,错误详情:{str(e)}")
        except (KeyError, TypeError) as e:
            # 处理JSON格式有效但数据结构不符合要求的情况
            print(f"数据结构错误:文件 {file} 数据格式不匹配,错误详情:{str(e)}")
        except Exception as e:
            # 兜底处理其他未预料的异常,避免程序崩溃
            print(f"插入失败:文件 {file} 发生未知错误,错误详情:{str(e)}")

关键优化点说明

  • 精准捕获JSON无效异常:json.load()解析格式错误的JSON时,会抛出JSONDecodeError(它是ValueError的子类),单独捕获这个异常就能精准识别“JSON格式无效”的场景,直接输出你需要的“解析失败”提示。
  • 增加文件名定位:在提示中带上当前处理的文件名,批量处理时能快速找到出问题的文件,比原来模糊的提示实用得多。
  • 分层处理异常:把不同类型的异常分开处理,避免笼统捕获掩盖问题——比如KeyError/TypeError可能是JSON格式有效但数据字段不符合插入要求,和纯格式错误的场景区分开。
  • 兜底异常保护:最后用Exception捕获所有未预料的错误,确保程序遇到突发情况不会直接崩溃,还能输出错误信息方便排查。

额外小提示

你现在的代码逻辑已经是先验证JSON有效性再插入了——只有json.load()解析成功的情况下,才会执行insert_one操作,完美符合你“插入前验证JSON有效性”的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:43:51