2015-12-05 66 views
-1

我似乎無法找到我的確切情況,因爲我是一個完整的noob,當談到Python。我正在查詢AV掃描儀以查找引擎列表。我需要計算「活動」引擎,以便稍後在代碼中使用該值來完成一些數學運算。下面是代碼:使用Python解析JSON列表

import requests 
EngineStat = 0 
requests.get("http://metascan.company.com:8008/metascan_rest/stat/engines",) 
msavtotal=0 
for key in EngineStat: 
s = EngineStat[key] 
    if key['active']: 
     msavtotal += 1 

這裏是響應JSON(剛剛剪斷):

[ 
    { 
"def_time": "12/02/2015 12:00:00 AM", 
"active": true, 
"eng_name": "Agnitum scan engine", 
"eng_type": "Bundled engine", 
"eng_ver": "5.5.1.3" 
    }, 
{ 
"def_time": "12/02/2015 12:00:00 AM", 
"active": true, 
"eng_name": "Ahnlab scan engine", 
"eng_type": "Bundled engine", 
"eng_ver": "3.5.5.1 (13155)" 
}, 
{ 
"def_time": "12/01/2015 12:00:00 AM", 
"active": true, 
"eng_name": "AVG scan engine", 
"eng_type": "Bundled engine", 
"eng_ver": "4213.4159" 

什麼我希望做的是循環和計數的情況下,當"active" = "true"

當我嘗試將s設置爲EngineStat[key]時出現錯誤。這看起來應該是非常簡單的東西,所以我相信這只是我的經驗不足而已。任何人都可以借我一隻手嗎?

+0

你不拉從請求內容,而不是從字符串轉換到一個快譯通,你會做使用模塊'json' –

+2

你怎麼」將「EngineStat」設置爲「0」後不要將「EngineStat」設置爲任何值? – Jason

回答

1

你可以嘗試這樣的:

import requests 

r = requests.get("http://metascan.company.com:8008/metascan_rest/stat/engines") 

msavtotal=0 
for item in r.json(): 
    if item['active']: 
     msavtotal += 1 
+1

很多謝謝。這是票。感謝您的幫助。 – Pmcdonn1