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

Python从API JSON提取order_id时如何避免KeyError?

解决API JSON中order_id字段缺失的KeyError问题

在提取外勤人员与客户交互的API JSON数据时,部分交互记录未生成订单,因此不存在order_id字段,直接通过item['order_id']访问会触发KeyError。以下是几种可行的解决方法,核心是给缺失的order_id设置默认值None:

方法1:使用字典get()方法(最简洁)

字典的get()方法可指定键不存在时的默认值,直接替换原取值方式即可:

import requests
import json

r = requests.get(baseurl + endpoint + '?page_number=1' + '&page_size=2', headers=headers)

output = r.json()

interactions_list = []

for item in output['data']:
    columns = {
        'id': item['id'],
        'number': item['user_id'],
        'name': item['user_name'],
        'order': item.get('order_id', None)  # 用get方法设置默认值None
    }
        
    interactions_list.append(columns)  

print(interactions_list)  

运行示例结果(假设其中一条无order_id):

[{'id': 1, 'number': 6, 'name': 'Johnny', 'order': 1001}, {'id': 2, 'number': 7, 'name': 'David', 'order': None}]

方法2:显式判断字段是否存在

如果需要更直观的逻辑,可先判断order_id是否在item的键集合中,再赋值:

import requests
import json

r = requests.get(baseurl + endpoint + '?page_number=1' + '&page_size=2', headers=headers)

output = r.json()

interactions_list = []

for item in output['data']:
    columns = {
        'id': item['id'],
        'number': item['user_id'],
        'name': item['user_name'],
    }
    # 判断order_id是否存在
    if 'order_id' in item:
        columns['order'] = item['order_id']
    else:
        columns['order'] = None
        
    interactions_list.append(columns)  

print(interactions_list)  

方法3:捕获KeyError异常

如果场景中可能存在其他键的缺失问题,也可以用异常捕获的方式处理:

import requests
import json

r = requests.get(baseurl + endpoint + '?page_number=1' + '&page_size=2', headers=headers)

output = r.json()

interactions_list = []

for item in output['data']:
    columns = {
        'id': item['id'],
        'number': item['user_id'],
        'name': item['user_name'],
    }
    try:
        columns['order'] = item['order_id']
    except KeyError:
        columns['order'] = None
        
    interactions_list.append(columns)  

print(interactions_list)  

以上三种方法都能解决字段缺失的问题,其中方法1的get()方法是处理这类字典键缺失场景的最优选择,代码简洁且可读性强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:15:41