Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中解析不规则JSON字段_Python_Json - Fatal编程技术网

在Python中解析不规则JSON字段

在Python中解析不规则JSON字段,python,json,Python,Json,考虑以下json格式: { "HostSystem(\"host-527\")": {}, "HostSystem(\"host-487\")": {}, "HostSystem(\"host-482\")": { "hardware.cpuInfo.numCpuThreads": 2, "name": "192.168.1.1", "config.network.consoleVnic": [], "capability.perVmSwapFiles": tru

考虑以下json格式:

{
"HostSystem(\"host-527\")": {},
"HostSystem(\"host-487\")": {},
"HostSystem(\"host-482\")": {
    "hardware.cpuInfo.numCpuThreads": 2,
    "name": "192.168.1.1",
    "config.network.consoleVnic": [],
    "capability.perVmSwapFiles": true,
    "capability.maxRunningVMs": 0,
    "config.dateTimeInfo.timeZone.name": "UTC",
}
我想从每个“主机系统”中解析出“name”和“hardware.cpuInfo.numputhreads”,但我无法正确读取密钥,而且似乎无法使用通配符

这是我用来测试读取“HostSystem*”及其失败的起始代码

import json

with open("blob.json") as json_data:
    data = json.load(json_data)
    print data['HostSystem *']
谢谢你的建议。

这是:

import json

with open("blob.json") as json_data:
    data = json.load(json_data)

for k in data:
    if 'hardware.cpuInfo.numCpuThreads' in data[k]:
        print data[k]['hardware.cpuInfo.numCpuThreads']
这是:

import json

with open("blob.json") as json_data:
    data = json.load(json_data)

for k in data:
    if 'hardware.cpuInfo.numCpuThreads' in data[k]:
        print data[k]['hardware.cpuInfo.numCpuThreads']

您的json数据复制是否正确?如果是这样,那么解析json数据就失败了,因为它不是有效的格式


在联机json编辑器()中检查json格式是否正确。您应该删除
“config.dateTimeInfo.timeZone.name”末尾的逗号“:“UTC”,
,并在其后面添加
}

您的json数据复制正确吗?如果是这样,那么解析json数据就失败了,因为它不是有效的格式


在联机json编辑器()中检查json格式是否正确。您应该删除
“config.dateTimeInfo.timeZone.name”末尾的逗号“:“UTC”,
,并在其后面添加
}

我认为这个答案可以通过使用list/dict comprehension输出列表或词典而不是打印来改进。谢谢您的更新。我已经在我的请求中添加了额外的评论,尽管这是正确的。我认为这个答案可以通过使用列表/听写理解来输出列表或词典,而不是打印来改进。谢谢你的更新。我已经在请求中添加了其他注释,尽管这是正确的。此外,我希望显示“HostSystem(\“host-*\”)每次迭代的信息。我希望看到的示例输出是:“HostSystem(\“host-482\”)-hardware.cpuInfo.numputhreads 2,name-192.168.1.1此外,我想显示“主机系统(\“主机-*\”)每次迭代的信息。我想看到的输出示例是:“主机系统(\“主机-482\”)-hardware.cpuInfo.numputhreads 2,name-192.168.1.1