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

Ansible json_query过滤时丢失目标键值对的问题咨询

Ansible JSON查询异常:subthing0无法被正确获取

原始API返回数据

{
  "records": [
    {
      "data0": "string",
      "data1": {
        "internal0": "string",
        "internal1": {
          "subthing0": "string",
          "subthing1": {
            "otherstuff": {
              "evenmore stuff": "string"
            }
          }
        }
      }
    }
  ]
}

(注:补全了原始示例遗漏的外层大括号)

问题现象

  • 执行以下查询时返回空结果:
    "{{ set_var.content | from_json | json_query('records[*].data1.internal1.subthing0') }}"
    
  • 执行以下查询时,仅显示subthing1的所有键值对,subthing0完全缺失:
    {{ set_var.content | from_json | json_query('records[*].data1.internal1') }}
    
  • 只有直接查询records层级时,才能看到subthing0的内容

排查方向与解决办法

  • 键名匹配问题:json_query对键名的大小写、拼写严格敏感。检查API返回的实际JSON中,subthing0的键名是否和查询语句完全一致(比如是否存在SubThing0这类大小写差异),键名不匹配会直接导致查询空结果。
  • 值类型或空值问题:如果subthing0的实际值是null、空字符串,或是无法被json_query正常解析的特殊类型,在查询internal1层级时可能被自动隐藏。可以通过打印完整格式化JSON确认:
    {{ set_var.content | from_json | to_nice_json(indent=2) }}
    
  • 分步验证查询路径:拆分查询步骤定位问题节点:
    1. 先验证records[*].data1是否返回正确内容
    2. 再验证records[*].data1.internal1的返回结果,确认subthing0是否真的存在于该层级
    3. 尝试用索引替代通配符:records[0].data1.internal1.subthing0,看是否能获取到值
  • 变量完整性检查:确认set_var.content在传递过程中未被其他任务修改或过滤。添加调试任务输出原始解析后的JSON:
    - name: 检查原始解析后的JSON数据
      debug:
        var: set_var.content | from_json
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:41:32