JSON/Python - decoding



我有json格式的文件,'datastores.json',看起来像这样:

{
"{'ESXi_Host': 'elvis.lab.vsphere.com'}": {
    "elvis.data": {
        "capacity": 293131517952, 
            "uuid": "57431578-630f1322-7bf2-00212883a5b0", 
            "vmfs_version": "5.60", 
            "ssd": false, 
            "extents": [
                "mpx.vmhba1:C0:T1:L0"
            ], 
            "local": true

我正在它上运行以下代码:

import json
with open("C:PyVmomi_out\datastores.json") as json_file:
datastores = json.loads(json_file.read())
for dstor in datastores:
    esx_host = dstor['ESXi_Host']
    datastore = dstor['datastore']

我收到以下错误:

TypeError: string indices must be integers

在这一行上:

esx_host = dstor['ESXi_Host']

我知道它期待一个整数。从我一直在做的阅读中,我虽然如果我潜入

'json.loads'

而不是

'json.load'

并且还潜入

'(json_file.read())'

而不是

'(json_file)'

然后它会将文件作为字符串读取,并允许字符串解析而不是整数。为什么这不起作用?

一个问题是你的.json中没有"ESXi_Host"键,它说

"{'ESXi_Host': 'elvis.lab.vsphere.com'}"

请注意" ",键是"{'ESXi_Host': 'elvis.lab.vsphere.com'}"(这是一个字符串)。

其次,加载的对象可能是一个字典,因此形式的迭代

for dstor in datastors:

在键上(是字符串,只有整数索引),而不是值,要访问值,请执行类似操作

for _, dstor in datastors.iteritems():

打印datastores并调查解析的 .json 的确切结构。

相关内容

  • 没有找到相关文章

最新更新