2017-09-01 209 views
-2

我想要在JSON API respons迭代,我無法達到我需要迭代通過嵌套JSON

這裏的數據是API響應的例子。 「我知道這不是完整的或有效的JSON :)」

{ 
"status": "running", 
"reasons": [], 
"nodes": { 
    "Server1": { 
     "status": "running", 

,我使用一個簡單的for循環迭代throught吧!

for platforms in sbNode: 
request = urllib2.Request(API URL) 
json_res = json.load(urllib2.urlopen(request)) 
for node in json_res['nodes']: 
    print node['status'] 

,我收到錯誤消息

類型錯誤:字符串索引必須是整數

和normaly我只是打印for循環看到JSON數據,但它只是打印服務器1 。

我在這裏迷路了....

幫助!!!

謝謝

回答

1

json_res['nodes']是一本詞典。遍歷字典只會給你鑰匙,所以node的第一個值可能是,例如,'Server1'。如果你想同時得到鍵和值,你可以重複使用.items()

for key, node in json_res['nodes'].items(): 

如果你只希望節點的值,你可以使用.values()

for node in json_res['nodes'].values(): 
+0

我們走吧!非常感謝 !! – Arriflex

0

你缺少深度的水平因爲json_res['nodes']您的數據是一個字典

json_res['nodes'] = { 
    "Server1": { 
     "status": "running", 
     ... 

您可以添加一個嵌套循環到打印服務器的狀態:

for node in json_res['nodes']: 
    for server in node: 
     print server['status']