Python json 嵌套 dump()dumps()

问题描述

我在 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 的内容,我用 .hostvars [] 做什么用 jq。

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 或 [] 替换它,则会出现语法错误。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)