pd.json_normalize报错Path Data类型错误需为列表或null问题咨询
报错根本原因
pandas.json_normalize的record_path参数有明确的类型约束:指定路径对应的值必须是列表类型或者空值null,否则就会抛出你看到的类型错误。
两个接口返回结构存在差异,才会导致相同代码运行结果不同:
- 正常运行的接口:
data字段返回值是由字典组成的列表,完全匹配record_path的入参要求,方法会自动把列表内的每个字典解析为DataFrame的一行数据,因此运行无异常。 - 触发报错的接口:
data字段返回值是单个字典对象,不属于列表/Null类型,直接触发参数类型校验失败,抛出对应报错。
兼容修复方案
不需要拆分两套处理逻辑,只需要在调用json_normalize前增加一层类型判断,把单个字典的场景统一包装为长度为1的列表,就能同时兼容两种接口返回结构:
将原代码中:
subscriptions_temp_df = pd.json_normalize(subscriptions_data, record_path=['data'])
替换为以下兼容代码即可:
data_content = subscriptions_data.get("data") # 单个字典场景包装为列表,兼容两种返回结构 if isinstance(data_content, dict): data_content = [data_content] subscriptions_temp_df = pd.json_normalize(data_content)
内容的提问来源于stack exchange,提问作者lsdmctrubey
相关产品推荐
相关产品推荐

