如何从 Json 响应中提取精确值?

问题描述 投票:0回答:2

在某个链接上执行发布操作后,我得到以下答案

{"data":{"loginWithEmail":{"__typename":"LoginResponse","me":{"__typename":"User","username":"davishelenekb","displayname":"davishelenekb","avatar":"https://image.sitecdn.com/avatar/default11.png","partnerStatus":"NONE","role":"None","myChatBadges":[],"private":{"__typename":"UserPrivateInfo","accessToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtasdasdasdaslzaGVsZW5la2IiLCJkaXNwbGF5bmFtZSI6ImRhdmlzaGVsZW5la2IiLCJhdmF0YXIiOiJodHRwczovL2ltYWdlLmRsaXZlY2RuLmNvbS9hdmF0YXIvZGVmYXVsdDExLnBuZyIsInBhcnRuZXJfc3RhdHVzX3N0cmluZyI6Ik5PTkUiLCJpZCI6IiIsImxpZCI6MCwidHlwZSI6ImVtYWlsIiwicm9sZSI6Ik5vbmUiLCJvYXV0aF9hcHBpZCI6IiIsImV4cCI6MTYwOTE4NDQwNyadasdasdaNTkyNDA3LCJpc3MiOiJETGl2ZSJ9.cQXJFUEo7r4bQa2FPHvKAvjisEF1VKldhFdxOcZ3YTk","email":"email","emailVerified":true,"bttAddress":{"__typename":"MyBTTAddress","senderAddress":null}},"subCashbacked":true},"accessToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImRhdmlzaGVsZW5la2IiLCJkaXNwbGF5bmFtZSI6ImRhdmlzaGVsZW5la2IiLCJhdmF0YXIiOiJodHRwczovL2ltYWdlLmRsaXZlY2RuLmNvbS9hdmF0YXIvZGVmYasdasdyIsInBhcnRuZXJfc3RhdHVzX3N0cmluZyI6Ik5PTkUiLCJpasdasdlwZSI6ImVtYWlsIiwicm9sZSI6Ik5vbmUiLCJvYXV0aF9hcHBpZCI6IiIsImV4cCI6MTYwOTE4NDQasd221DA3LCJpc3MiOiJETGl2ZSJ9.cQXJFUEo7r4bQa2FPHvKAvjisEF1VKldhFdxOcZ3YTk","twofactorToken":null,"err":null}}}

我只想提取其中的密钥

"accessToken":"KEY"
,

我该怎么做?

我的代码

import requests
import json
from fake_useragent import UserAgent

#Set Modules
ua = UserAgent()
url = 'site'

#Read TXT
accounts = 'accounts\\accounts.txt'
with open(accounts) as line:
   login = line.readline()
   line = login.split(",")
   cnt = 1
email = line[0]
password = line[1]

#login
head = {
   '.......': '.........',
}

data = {
  ..........
}

test = requests.post(url, json.dumps(data), headers=head)
if test.status_code == 200:
   print('Loged!')
   print(test.text)
else:
   print('Error') ```
python json python-requests
2个回答
1
投票

您可以获取响应的文本,将其解析为 JSON,然后访问“accessToken”属性:

test = requests.post(url, json.dumps(data), headers=head)
if test.status_code == 200:
    parsed = json.loads(test.text)
    key = parsed['data']['loginWithEmail']['accessToken']
    print(key)

旁注:
此代码片段假设返回的 JSON 的格式是众所周知的并且不会发生错误。在现实场景中,您可能需要添加一些验证。


1
投票

你可以像这样实现你所需要的:

response = test.json()
print(response["data"]["loginWithEmail"]["me"]["private"]["accessToken"])
© www.soinside.com 2019 - 2024. All rights reserved.