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

解析JSON时存在目标key却触发KeyError的问题排查

问题分析与解决办法

原因分析

那些type为OT_PLAYER_PARTICIPANT且状态是SUSPENDED的outcomes对象没有odds字段,本质是API的业务逻辑设计:当玩家参与项处于暂停投注状态时,赛事方不会提供赔率数据,所以这类对象自然不会包含odds字段,属于正常的返回逻辑,不是数据异常。

解决办法

针对这种键可能缺失的情况,有几种实用的处理方式:

  • 使用字典get()方法(最简洁)
    直接通过get()方法获取字段,同时指定默认值(比如None),避免触发KeyError:

    odds = outcome.get('odds', None)
    # 后续可以根据需求处理,比如如果odds为None就跳过该条数据
    if odds is not None:
        # 执行你的数据提取逻辑
    
  • 捕获KeyError异常
    用try-except块捕获可能的键错误,灵活处理缺失情况:

    try:
        odds = outcome['odds']
        # 处理有odds的情况
    except KeyError:
        # 没有odds时的处理逻辑,比如跳过或赋值默认值
        odds = 0  # 或者None、空字符串,根据业务需求定
    
  • 提前检查键是否存在
    先判断'odds'是否在outcome字典里,再执行提取:

    if 'odds' in outcome:
        odds = outcome['odds']
        # 处理逻辑
    else:
        # 无odds时的处理,比如跳过该条数据
        continue
    

另外,如果业务上不需要处理暂停状态的项,可以提前过滤:

if outcome.get('status') == 'SUSPENDED':
    continue  # 跳过这类数据,不进行后续处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:35:18