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

调用Azure Graph API获取邮件统计报告遇JSONDecodeError问题求助

问题分析与解决

根本原因:Graph报告API返回的是CSV而非JSON

你遇到的JSONDecodeError不是转义字符导致的,核心问题是Microsoft Graph的邮件活动报告API(getEmailActivityUserCounts)默认返回CSV格式数据,而非JSON。用JSON解析器处理CSV内容,必然会触发解码错误。

配置JSON里的端点写法无问题

你的配置文件中端点写法"https://graph.microsoft.com/v1.0/reports/getEmailActivityUserCounts(period='D7')"是合法的:JSON字符串用双引号包裹,内部的单引号无需转义,JSON解析器可正常识别。

解决步骤

  • 直接处理CSV响应:
    调用API后,不要用response.json()解析,改为读取响应的文本内容(CSV格式),再用csv模块解析为结构化数据:
    # 获取访问令牌后调用API
    response = requests.get(
        endpoint,
        headers={'Authorization': 'Bearer ' + access_token}
    )
    # 读取CSV原始内容
    csv_content = response.text
    # 解析CSV为字典结构
    import csv
    from io import StringIO
    reader = csv.DictReader(StringIO(csv_content))
    for row in reader:
        print(row)  # 处理每一行报告数据
    
  • 可选:指定返回JSON格式:
    如果需要JSON格式的结果,可在请求头中添加Accept: application/json,Graph API会返回JSON格式的报告:
    response = requests.get(
        endpoint,
        headers={
            'Authorization': 'Bearer ' + access_token,
            'Accept': 'application/json'
        }
    )
    # 此时可正常解析JSON
    report_data = response.json()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 22:20:29