在Ansible playbook中,使用json_query过滤器查询JSON数据时可能会出现问题,导致查询不返回值。为解决此问题,请使用以下步骤:
确保JSON数据符合JSON格式要求。
在待查询的JSON数据中,查找指定的键值对,例如:
- hosts: all
vars:
my_json_data:
data:
- name: 'John'
age: 25
- name: 'Alice'
age: 30
tasks:
- name: Retrieve John's age
debug:
msg: "{{ my_json_data.data | json_query('[?name==`John`].age') }}"
在以上示例中,JSON数据是包含一个名为数据(data)的键值对,它是一个包含两个键值对的数组。上面的任务将返回John的年龄,即25。
确保查询表达式正确,应该使用正确的JSONpath查询语法。可以尝试使用一些在线JSONpath查询工具来验证表达式是否正确。
参考链接:https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#json-query-filter