2016-05-16 152 views
0

我正在嘗試使用本地存儲的json文件。這是格式化如下:如何在python中解析json嵌套的dict?

{ 
    "all":{ 
     "variables":{ 
     "items":{ 
      "item1":{ 
       "one":{ 
        "size":"1" 
       }, 
       "two":{ 
        "size":"2" 
       } 
      } 
     } 
     } 
    } 
} 

我想要使用下面的代碼獲取大小關鍵的值。

with open('path/to/file.json','r') as file: 
    data = json.load(file) 
itemParse(data["all"]["variables"]["items"]["item1"]) 

def itemParse(data): 
    for i in data: 
    # also tried for i in data.iterkeys(): 
     # data has type dict while i has type unicode 
     print i.get('size') 
     # also tried print i['size'] 

得到了不同的錯誤,似乎沒有任何工作。有什麼建議麼?

也嘗試使用json.loads遇到錯誤預期字符串或緩衝區

+0

在您的打印行上使用數據[i] ['size']。 –

回答

1

當你遍歷data你得到只是關鍵。有兩種方法可以解決它。

def itemParse(data): 
    for i, j in data.iteritems(): 
     print j.get('size') 

def itemParse(data): 
    for i in data: 
     print data[i].get('size') 
+0

感謝毛羅!但我想知道爲什麼我不能得到相同的結果,如果我打印i.get('大小')?不像第二個例子那樣再次使用數據? – tkyass

+0

正如我在回答中所說的,當你迭代字典時,它會檢索密鑰。所以你要在字符串中使用'get'方法。 –

+0

非常感謝毛羅! – tkyass

0

首先,使用json.loads()

data = json.loads(open('path/to/file.json','r').read()) 

其次,你的for循環應改爲此

for k,v in data.iteritems(): 
    print data[k]['size'] 

關於error expect string or buffer,你是否有權限讀取JSON文件?