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

Ansible遍历含字母数字键的字典时遇RepresenterError求助

问题解决方法

你的错误根源是动态字典键的访问方式错误。当字典的键是循环变量(比如item)时,不能用点语法(.)直接访问,必须改用方括号[]来引用动态键名。

修正后的代码

将原代码中的点语法访问改为方括号引用item,即可正确获取对应键的值:

- debug: msg="{{ abccontent.json.nodes[item].jvm.mem.heap_used | to_nice_yaml }}"
  with_items:
    - RAV1MMn1TwKuxl229TbDFFQ
    - ZJeljFpTQXWl4dnlYDS4Ygw
    - _z9213e2uQJWT4rS3H_-QPw
    - KmNwadKddS_-rZZIK5TO3yQ

额外优化建议

  • 如果heap_used是数值或简单字符串类型,可去掉to_nice_yaml过滤器,直接输出更简洁:
    - debug: msg="{{ abccontent.json.nodes[item].jvm.mem.heap_used }}"
      with_items:
        - RAV1MMn1TwKuxl229TbDFFQ
        - ZJeljFpTQXWl4dnlYDS4Ygw
        - _z9213e2uQJWT4rS3H_-QPw
        - KmNwadKddS_-rZZIK5TO3yQ
    
  • Ansible 2.5及以上版本推荐用loop替代with_items,语法更清晰:
    - debug: msg="{{ abccontent.json.nodes[item].jvm.mem.heap_used | to_nice_yaml }}"
      loop:
        - RAV1MMn1TwKuxl229TbDFFQ
        - ZJeljFpTQXWl4dnlYDS4Ygw
        - _z9213e2uQJWT4rS3H_-QPw
        - KmNwadKddS_-rZZIK5TO3yQ
    

错误原因说明

原代码中abccontent.json.nodes.item.jvm.mem.heap_used会被Ansible解析为访问nodes字典下名为item的固定键,而非循环变量item的实际值,导致找不到对应键值返回AnsibleUndefined,最终触发YAML序列化错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 02:58:27