簡體   English   中英

JSON / Python-解碼

[英]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'}" (這是一個字符串)。

其次,加載的對象可能是一個dictionary ,因此是形式的迭代

for dstor in datastors:

鍵上 (鍵是字符串,只具有整數索引 ),而不是值,訪問值的操作類似於

for _, dstor in datastors.iteritems():

打印您的datastores並調查解析后的.json的確切結構是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM