【发布时间】:2020-11-30 23:58:12
【问题描述】:
开发者社区你好!
我目前正在开发一些 Ansible 剧本来管理 Citrix NetScaler 配置,并希望就以下问题寻求一些帮助。我在名为 nsadc_config_file_textfsm_nsadc_vlan_binding_parsed
的变量文件中定义了以下数据结构[
{
"bind_vlan_NotParsed": "",
"bind_vlan_id": "1042",
"bind_vlan_ifnum": "",
"bind_vlan_ipaddress": "10.162.5.120",
"bind_vlan_netmask": "255.255.255.128",
"bind_vlan_ownergroup": "",
"bind_vlan_tagged": "",
"bind_vlan_td": ""
},
{
"bind_vlan_NotParsed": "",
"bind_vlan_id": "1050",
"bind_vlan_ifnum": "",
"bind_vlan_ipaddress": "10.162.5.250",
"bind_vlan_netmask": "255.255.255.128",
"bind_vlan_ownergroup": "",
"bind_vlan_tagged": "",
"bind_vlan_td": ""
}
]
我想使用循环在 Jinja 文件中使用 json_query 查询此 JSON 结构,以获取特定 VLAN ID 的记录:
{% if (nsadc_config_file_textfsm_nsadc_vlan_binding_parsed | json_query('[?bind_vlan_id == `' + item_0.add_vlan_id + '`]')) %}
但不幸的是,查询不起作用,我总是得到一个空结果。 bind_vlan_id和add_vlan_id这两个变量都是整数,但据我了解,JSON结构默认包含字符串key:value。我相信,这可能是问题的原因:整数与字符串。我已经尝试了很多场景,但没有运气。
- json_query('[?bind_vlan_id == `' + item_0.add_vlan_id + '`]')
- json_query('[?bind_vlan_id == `' + item_0.add_vlan_id | string + '`]')
- json_query('[?bind_vlan_id == item_0.add_vlan_id]')
- json_query('[?bind_vlan_id == item_0.add_vlan_id | string]')
- json_query('[?bind_vlan_id == `item_0.add_vlan_id`]')
- json_query('[?bind_vlan_id == ''item_0.add_vlan_id'']')
谁能指出我正确的方向,在整数值作为条件的情况下,json_query 应该如何工作?非常感谢您!
【问题讨论】:
-
见minimal reproducible example。尽量减少代码。
标签: json ansible jinja2 json-query