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

2024-09-19 23:43:20 发布

您现在位置:Python中文网/ 问答频道 /正文

在对某个链接进行Post操作后,我得到以下答案

{"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') ```

Tags: testimportdataemaillineloginnullprint
2条回答

您可以通过以下方式实现所需:

response = json.loads(test.text)
print(response["data"]["loginWithEmail"]["me"]["private"]["accessToken"])

您可以获取响应的文本,将其解析为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格式是众所周知的,并且不会发生错误。在真实场景中,您可能需要添加一些验证

相关问题 更多 >