要使用从 json 收集的变量,我需要它是原始的,不带引号:
我有
ok: [device] => {
"fact": {
"int": "7"
},
}
我想
ok: [device] => {
"fact": {
"int": 7
},
}
问题是引号不是变量的一部分,所以我不能使用| int
或| replace
删除引号。
有办法吗?
答案1
结果是金贾表达式始终是字符串。您无法获得整数。我猜您真正想要的是属性的值整数在字典里事实为整数。测试当前值,例如
- debug:
var: fact.int
- debug:
var: fact.int|type_debug
如果属性的值整数您将获得一个字符串(节选)
fact.int: '7'
fact.int|type_debug: AnsibleUnicode
您可以将字符串转换为整数,例如
- set_fact:
fact: "{{ fact|combine({'int': _int|int}) }}"
vars:
_int: "{{ fact.int }}"
- debug:
var: fact.int
- debug:
var: fact.int|type_debug
你会得到(节选)
fact.int: '7'
fact.int|type_debug: int
现在,属性的值整数是一个整数。但是,Jinja 表达式的结果var: fact.int
仍然是一个字符串fact.int: '7'
。
笔记