我有以下代碼
import requests
import json
import sys
credentials_User=sys.argv[1]
credentials_Password=sys.argv[2]
email=sys.argv[3]
def auth_api(login_User,login_Password,):
gooddata_user=login_User
gooddata_password=login_Password
body = json.dumps({
"postUserLogin":{
"login": gooddata_user,
"password": gooddata_password,
"remember":1,
"verify_level":0
}
})
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
url="https://reports.domain.com/gdc/account/login"
response = requests.request(
"POST",
url,
headers=headers,
data=body
)
sst=response.headers.get('Set-Cookie')
return sst
def query_api(cookie,email):
url="https://reports.domain.com/gdc/account/domains/domain/users?login=" email
body={}
headers={
'Content-Type': 'application/json',
'Accept': 'application/json',
'Cookie': cookie
}
response = requests.request(
"GET",
url,
headers=headers,
data=body
)
jsonContent=[]
jsonContent.append({response.text})
accountSettings=jsonContent[0]
print(accountSettings)
cookie=auth_api(credentials_User,credentials_Password)
profilehash=query_api(cookie,email)
代碼本身作業并向 Gooddata API 發送請求。
query_api() 函式回傳類似于下面的 JSON
{
"accountSettings": {
"items": [
{
"accountSetting": {
"login": "[email protected]",
"email": "[email protected]",
"firstName": "First Name",
"lastName": "Last Name",
"companyName": "Company Name",
"position": "Data Analyst",
"created": "2020-01-08 15:44:23",
"updated": "2020-01-08 15:44:23",
"timezone": null,
"country": "United States",
"phoneNumber": "(425) 555-1111",
"old_password": "secret$123",
"password": "secret$234",
"verifyPassword": "secret$234",
"authenticationModes": [
"SSO"
],
"ssoProvider": "sso-domain.com",
"language": "en-US",
"ipWhitelist": [
"127.0.0.1"
],
"links": {
"projects": "/gdc/account/profile/{profile_id}/projects",
"self": "/gdc/account/profile/{profile_id}",
"domain": "/gdc/domains/default",
"auditEvents": "/gdc/account/profile/{profile_id}/auditEvents"
},
"effectiveIpWhitelist": "[ 127.0.0.1 ]"
}
}
],
"paging": {
"offset": 20,
"count": 100,
"next": "/gdc/uri?offset=100"
}
}
}
我遇到的問題是從這個 JSON Dict 中讀取特定的鍵,我可以使用accountSettings=jsonContent[0]但它只回傳相同的 JSON。
我想要做的是讀取里面的project鍵的值links
我將如何使用 dict 執行此操作?
謝謝
uj5u.com熱心網友回復:
根據您的描述,您在串列中有您的價值,(不是set.Foergt about set: 集合不與 JSON 一起使用)。在您的串列中,您可以將內容作為單個字串,然后您必須使用 決議json.loads,或者它只是一個已經從 JSON 中提取的行為良好的嵌套資料結構,但它位于單個元素串列中。這似乎是最有可能的。
所以,你應該能夠做到:
accountlink = jsonContent[0]["items"][0]["accountSetting"]["login"]
否則,如果它被編碼為 json 字串,則必須先對其進行決議:
import json
accountlink = json.loads(jsonContent[0])["items"][0]["accountSetting"]["login"]
現在,鑒于您的問題,我想說您作為程式員或臨時用戶處于初學者水平,只是使用 Python 來自動化某些事情,我建議您在繼續之前嘗試一些練習:它會為您節省時間(很多時間)。我不想在這里欺負或嘲笑任何事情:這是我能給你的最好建議。尋找在互動模式下播放的教程,而不是一次嘗試整個程式,你只需復制和粘貼。
uj5u.com熱心網友回復:
使用下面的代碼解決了這個問題
jsonContent=json.loads(response.text)
print(type(jsonContent))
test=jsonContent["accountSettings"]["items"][0]
test2=test["accountSetting"]["links"]["self"]
print(test)
print(test2)
我相信這是可行的,因為出于某種原因,我沒有注意到我正在使用 .append 作為我的 jsonContent。這導致資料型別與應有的不同。
感謝所有試圖幫助我的人。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/416598.html
標籤:
上一篇:有人可以幫我規范化功能塊嗎?
