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

