2017-09-21 41 views
1

我試圖解析字典中的特定值。該字典是來自API查詢的json有效內容。我嘗試了很多方法,但我無法得到我想要的。試圖解析python中的json響應的值

我的目標是:

  1. 通過解析現有名稱的列表。我有一個從文件導入的空字典。
  2. 查看該名稱是否對每個API響應有效。
  3. 打印活躍用戶列表:如果用戶正在活動打印(「用戶:%s活動」%用戶)
  4. 然後打印非活動用戶列表:else print(「用戶:%s不活動」 %用戶)

爲了得到我的價值觀:

#!/usr/bin/env python 

import requests 
from requests.auth import HTTPBasicAuth 
import json 
import sys 
import getpass 

password = getpass.getpass() 
url = "https://myurl/blah/blah/getusers=true" 
request = requests.get(url,auth=HTTPBasicAuth('username', password.format(password)), verify=True) 

if(request.ok): 
    data = json.loads(request.content) 
    for key in data: 
     users = data[key] 
     print users 
else: 
    request.raise_for_status() 

正在返回什麼:

https://myurl/blah/blah/getusers=true 
getusers 
users{u'max-results': 50, u'items': [{u'displayName': u'testfirstname, testlastname', u'name': u'testfirstname', u'self': u'https://blah/blah',    u'emailAddress': u'[email protected]', u'key': u'myusername', u'active': True, u'timeZone': u'America/Los_Angeles'}, 

我不知道,如果是菊st,我很難找到哪個鍵或什麼。答案中的關鍵是:u'active':True。我試圖拉動'積極'的價值,但無濟於事。任何幫助,將不勝感激。

編輯:更多信息。因此,有效負載將爲每個用戶返回一個包含數據的用戶列表。 「active:True」只是定義系統中用戶的一個參數。我想獲取我已擁有的用戶列表,並檢查API以查看列表中的每個用戶是「active:True」還是「active:False」。 我不知道爲什麼前兩行返回(url和getusers)

+1

'json.loads()'會給你一個嵌套字典。檢查多個級別的按鍵,找到你想要的。我需要一個更具體的問題來說更多 - 實際上我不知道你在找什麼,或者你的數據是什麼樣的。 –

+0

打印輸出中的字典輸出實際上是什麼?這是整個迴應?你有3行輸出,但只有一個'print',我不知道我們在那看什麼。 – roganjosh

回答

1

在我看來,像你想要的一切是在JSON的項目級別內。試試這樣:

data = json.loads(request.content) 
items = data['items'] 
active=[] 
inactive=[] 
for i in range(len(items)): 
    user = items[i] 
    if user['active']: 
     active.append(user) 
    else: 
     inactive.append(user) 
+0

這讓我想要什麼,謝謝。我只需要弄清楚如何比較兩個dictionairies。當我嘗試使用print active.items()打印列表時,出現錯誤。 – Kryten