gpt4 book ai didi

arrays - 使用 Ansible 从属性等于变量的 json 数组中检索值

转载 作者:行者123 更新时间:2023-12-04 12:06:03 28 4
gpt4 key购买 nike

我正在尝试使用 Ansible 获取 json 数组中属性的值。示例数据:

"domains.json.data": [
{
"axfr_ips": [],
"description": "",
"domain": "mydomain.net",
"expire_sec": 0,
"group": "",
"id": 687088,
},
{
"axfr_ips": [],
"description": "",
"domain": "myotherdomain.net",
"expire_sec": 0,
"group": "",
"id": 687089,
}
]
}

所以我尝试使用 json 查询:
"{{ domains.json.data | json_query(\"data[?domain=='{{ server_domain }}'].id\") }}"

或与:
- set_fact:
domain_id: "{{ domains | json_query(query) | first }}"
vars:
query: "domains.json[?name=='{{ server_domain }}'].id"

还尝试使用 selectattrib:
"{{ linode_domains.json.data | selectattr(\"domain\", \"{{ server_domain }}\") | list }}"

所以我需要的是获取我在 {{ server_domain }} 中获得的域的 id。

最佳答案

查询无法工作,因为没有属性 name在字典里

        query: "domains.json[?name=='{{ server_domain }}'].id"
使用属性 domain .例如下面的任务
    - debug:
msg: "{{ domains.json.data|json_query(query) }}"
vars:
server_domain: 'mydomain.net'
query: "[?domain=='{{ server_domain }}'].id"

    "msg": [
687088
]

笔记
  • json_query 返回一个列表。
  • 首先使用过滤器获取列表的第一个元素

  •         msg: "{{ domains.json.data|json_query(query)|first }}"

    关于arrays - 使用 Ansible 从属性等于变量的 json 数组中检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58208915/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com