Python用pd.json_normalize处理Monday.com API JSON转CSV报KeyError如何解决
问题原因
- 你触发
KeyError: 'items'的核心原因是pd.json_normalize的参数传值不符合你的JSON结构:你传入的根JSON对象json_data的顶层键只有data和account_id,没有直接的items字段。items字段的实际层级是json_data['data']['boards'][0]['items']。 - 另外即使你找到了正确的
items列表,直接调用normalize也无法自动把column_values嵌套数组展开成多列,还需要额外处理这个字段的结构。
正确实现代码
你可以直接遍历处理items列表,把嵌套的列值转成独立字段,再生成DataFrame导出CSV,逻辑更直观易懂:
import requests import json import pandas as pd apiKey = "API Key Here" apiUrl = "https://api.monday.com/v2" headers = {"Authorization" : apiKey} query2 = '{boards(ids:123456) {items{name, column_values{title text } } } }' data = {'query' : query2} response = requests.post(url=apiUrl, json=data, headers=headers) json_data = json.loads(response.text) # 提取items列表 items = json_data['data']['boards'][0]['items'] processed_rows = [] for item in items: # 初始化行数据,保存条目名称 row = {"条目名称": item['name']} # 遍历嵌套的列值,把列标题作为键,列内容作为值存入行 for col_val in item['column_values']: row[col_val['title']] = col_val['text'] processed_rows.append(row) # 生成DataFrame并导出CSV,用utf-8-sig编码避免特殊字符乱码 df = pd.DataFrame(processed_rows) df.to_csv('monday_board_export.csv', index=False, encoding='utf-8-sig')
运行后会在当前目录生成monday_board_export.csv文件,结构如下:
| 条目名称 | Person | Status | Date |
|---|---|---|---|
| Item 1 | Mark McCoy | None | 2021-02-05 |
| This is a new item | None | 2021-04-17 | |
| ... | ... | ... | ... |
内容的提问来源于stack exchange,提问作者markymark196
相关产品推荐
相关产品推荐

