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

Ansible提取JSON字段报错'list object' has no attribute 'name'问题咨询

错误原因

你返回的JSON结构中,model_image_response.json.models 是数组类型(用方括号[]包裹),数组本身没有name属性,直接调用models.name自然会抛出'list object' has no attribute 'name'错误。

修复方案

场景1:models数组仅存1个元素(和你提供的示例结构一致)

先取数组第一个元素,再访问name字段拆分即可,修改后的代码如下:

- name: set model ID
  set_fact: 
    model_id: "{{ model_image_response.json.models[0].name.split('/')[-1] }}"

说明:这里使用split('/')[-1]替代你之前写的split('/')[5]兼容性更强,只要ID是路径的最后一段,哪怕后续路径层级发生变化也能正常提取。

场景2:models数组存在多个元素,需要批量提取所有ID

可以使用Ansible的map过滤器批量处理:

- name: 批量提取所有model ID
  set_fact:
    model_id_list: "{{ model_image_response.json.models | map(attribute='name') | map('split', '/') | map('last') | list }}"
调试校验

如果拿不准结构,可以先加debug任务打印变量确认取值逻辑:

- name: 打印models结构
  debug:
    var: model_image_response.json.models

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:15:03