json - 如何从 vmware_guest_disk_facts 获取字典条目
问题描述
我正在尝试获取特定硬盘的数据存储名称,但我未能成功找出在列表中选择一个条目。
此输出来自 ansible 模块“vmware_guest_disk_facts”,我将此输出保存到名为“vm_info”的变量中。
"guest_disk_facts": {
"0": {
"backing_filename": "stuffstuff",
"capacity_in_kb": 106954752,
"backing_eagerlyscrub": false,
"backing_datastore": "WHAT I REALLY WANT",
"backing_writethrough": false,
"label": "Hard disk 1",
"backing_type": "FlatVer2",
"key": 2000,
"capacity_in_bytes": 109521666048,
"backing_thinprovisioned": false,
"controller_key": 1000,
"summary": "106,954,752 KB",
"unit_number": 0,
"backing_uuid": "info"
},
"1": {
"backing_filename": "stuffstuff",
"capacity_in_kb": 15728640,
"backing_eagerlyscrub": false,
"backing_datastore": "DON'T CARE OF ABOUT THIS ONE",
"backing_writethrough": false,
"label": "Hard disk 2",
"backing_type": "FlatVer2",
"key": 2001,
"capacity_in_bytes": 16106127360,
"backing_thinprovisioned": false,
"controller_key": 1000,
"summary": "15,728,640 KB",
"unit_number": 1,
"backing_uuid": "info"
}
- debug:
msg: "{{ item.guest_disk_facts | json_query(query) }}"
with_items: "{{ vm_info.results }}"
vars:
query: "guest_disk_facts.0.backing_datastore" #done w/ & w/o quotes around 0
我还尝试了以下查询,我觉得此时我已经用尽了所有选项。
query: "guest_disk_facts.[0].backing_datastore"#done w/ & w/o quotes around 0
query: "guest_disk_facts[0].backing_datastore" #done w/ & w/o quotes around 0
query: "guest_disk_facts.*.backing_datastore" #will give me backing_datastore entries for both dictionaries in this case
我只想为这个字典列表中的一个条目获取 backing_datastore
味精:“我真正想要的”
但到目前为止,我返回了这个错误:
期望:['quoted_identifier', 'unquoted_identifier', 'lbracket', 'lbrace'],得到:数字:第 17 列的解析错误,标记 \"0\" (NUMBER),用于表达式
或者
味精:“”
或者
味精:[
"0",
]
解决方案
下面的任务给出了“你真正想要的”
- debug:
msg: "{{ guest_disk_facts['0'|quote].backing_datastore }}"
重点是引用引用的键。键 '0' 和 '1' 不是有效变量,必须加引号。
下面的循环
- debug:
msg: "{{ guest_disk_facts[item|quote].backing_datastore }}"
loop: "{{ guest_disk_facts.keys() }}"
给
ok: [localhost] => (item=1) =>
msg: DON'T CARE OF ABOUT THIS ONE
ok: [localhost] => (item=0) =>
msg: WHAT I REALLY WANT
推荐阅读
- swift - 使用 DragGesture 移动视图,同时在顶部有一个 ScrollView
- javascript - 查找超过 x 个单词的单词(打印输入了多少单词)
- python - IsolationForest 决策分数到概率算法的转换
- python - + 不支持的操作数类型:“NoneType”和“NoneType”(Python)
- grpc - 避免 GRPC 服务器中的端口冲突
- python - 我尝试建立一个基于 ICARL 的 16 类植物图像数据的增量学习系统,但训练损失保持在 0.6931 左右
- firebase - Flutter Firebase:如何查找所有身份验证错误代码?
- visual-studio - Visual Studio 中的 Visual Studio 代码键盘方案,某些键不起作用
- javascript - 如何防止'.startTyping()'永远等待
- java - Java 代码不断将列表中的旧元素覆盖为新元素