【发布时间】:2021-02-07 20:13:17
【问题描述】:
我在 python 脚本中遇到了嵌套 json 的问题,我需要重现以下 jq 查询:
cat inventory.json | jq '.hostvars[] | [.openstack.hostname, .openstack.accessIPv4]'
json 文件的结构如下:
{
"hostvars": {
"096b430e-20f0-4655-bb97-9bb3ab2db73c": {
"openstack": {
"accessIPv4": "192.168.3.6",
"hostname": "vm-1"
}
}
"8fb7b9b7-5ccc-47c8-addf-64563fdd0d4c": {
"openstack": {
"accessIPv4": "192.168.3.7",
"hostname": "vm-2"
}
}
}
}
使用 jq 的查询给了我正确的输出:
# cat test.json | jq '.hostvars[] | [.openstack.hostname, .openstack.accessIPv4]'
[
"vm-1",
"192.168.3.6"
]
[
"vm-2",
"192.168.3.7"
]
现在我想在 python 中重现这一点,以处理变量中的各个值,但我无法解析每个 id 的内容,我用 jq 和 .hostvars [] 做什么。
with open('inventory.json', 'r') as inv:
data=inv.read()
obj=json.loads(data)
objh=obj['hostvars'][096b430e-20f0-4655-bb97-9bb3ab2db73c]['openstack']
print(objh)
调用 id 有效,但如果我将其替换为 0 或 [],则会出现语法错误。
【问题讨论】:
标签: python json python-jsons