我正在使用URI模块,并且收到了JSON响应。到目前为止,这是我的剧本。
.. some playbook ..
register: output
- debug: msg="{{ output }}"
- name: get job id
set_fact:
job_id: "{{ output.json.results }}"
- debug: msg="{{ job_id }}"
以下是上述调试中的job_id输出:
ok: [localhost] => {
"msg": [
{
"approval_state": "pending_approval",
"created_on": "2018-12-18T22:48:40Z",
"description": "Provision from [tpl] to [test]",
"href": "https://foo.ca/api/provision_requests/1000000000143",
"id": "1000000000143",
"message": "VM Provisioning - Request Created",
"options": {
"addr_mode": [
"dhcp",
"DHCP"
],
"auto_approve": false,
"cluster_filter": [
null,
null
],
"cores_per_socket": [
2,
"2"
],
我想在上面的JSON输出的第5行中提取“ id”。有任何想法吗?
我尝试了output.json.results.id
,但该错误没有找到对象ID
答案 0 :(得分:0)
如果查看生成的JSON,则实际上有一个字典列表,尽管在这种情况下,您有一个包含单个字典的列表。因此,给出确切的示例:
- debug:
msg: "{{ job_id[0].id }}"
将提取id字段。
如果要从列表中的每个词典中提取id字段(假设可以使用多个词典),则可以执行以下操作:
- debug:
msg: "{{ job_id | map(attribute='id') | list }}"
这将产生一个简单列表,其中包含每个词典中id字段的内容。