Ansible json_query来过滤字典列表中的字典数据

问题描述

我有一个Ansible任务,该任务根据特定条件收集用户数据并将其注册到变量中,并尝试在下一个任务中迭代注册的数据以仅获取name参数。

{
    "registered_data": {
        "changed": false,"msg": "All items completed","results": [
          {
            "ansible_loop_var": "item","changed": false,"Failed": false,"data_details": [
              {
                "name": "John","street": "SanFisco"
              },{
                "name": "Dan","street": "Califor"
              },{
                "name": "Jack","street": "NY"
              },{
                "name": "Wills","street": "NJ"
              }
            ],"invocation": {
              "module_args": {
                "sort_by": null,"sort_order": null
                }
            },"item": {
              "status": "READY"
            }
          },{
            "ansible_loop_var": "item","data_details": [],"sort_order": null
              }
            },"item": {
              "status": "READY"
            }
          }
        ]
      }
}

我正尝试使用下面的ansible任务来解析和过滤不返回任何输出的数据。

- name: 'printing data'
  delegate_to: 'localhost'
  when: item
  loop: "{{ registered_data |json_query(projection_query) }}"
  debug:
    msg: "{{ item }}"
  vars:
    projection_query: "results.[*].name"

解决方法

下面的任务

    - debug:
        msg: "{{ registered_data.results|json_query(query) }}"
      vars:
        query: "[].data_details[].name"

给予

  msg:
  - John
  - Dan
  - Jack
  - Wills