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

Jinja中访问API返回的嵌套字典如何避免键错误?

在Jinja中避免嵌套字典的键错误

嘿,这个问题我太熟悉了!在处理从JSON API拿到的嵌套字典时,最怕就是深层键不存在导致的报错,Jinja里有几个实用的办法能轻松解决这个问题:

  • 链式使用get()方法(最推荐)
    字典的get()方法允许你指定一个默认值,如果键不存在就返回这个默认值。对于嵌套结构,我们可以逐层用get(),每一层的默认值设为空字典,这样即使中间某层不存在,下一层的get()也能安全调用,不会抛出错误。比如针对你的场景:

    {{ context.get('city', {}).get('houston', {}).get('street', '未找到街道信息') }}
    

    这里最后一个参数是你想给的默认显示内容,如果所有键都存在就显示对应的值,任何一层缺失就会显示默认值。

  • 用if语句逐层判断
    如果你需要根据键是否存在做更多自定义逻辑(比如不同的提示信息),可以用if语句逐层检查每一层的键是否存在:

    {% if context.get('city') and context.city.get('houston') %}
        {{ context.city.houston.street }}
    {% else %}
        抱歉,街道信息不可用
    {% endif %}
    

    这种方式逻辑清晰,适合需要分支处理的场景。

  • 结合default过滤器(适合简单场景)
    如果你使用的是Jinja 2.10及以上版本,可以用default过滤器,但要记得加上第二个参数true——这个参数表示即使变量是未定义的(不只是空值)也会应用默认值。不过注意这种方式只适合最后一层的情况,如果中间层不存在还是会报错,所以通常配合get()一起用更稳妥:

    {{ context.get('city', {}).get('houston', {}).street | default('无街道数据', true) }}
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:18:10