将字典值的特定部分存储到字符串中

Storing a specific part of a dict value into a string

import requests
import json

url = "********"

payload = json.dumps({
"username": "*****",
"password": "*****"
})
headers = {
'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)


#*** Convert response into a dictionary ***
r = json.loads(response.text)

# *** print the value of they key 'accessToken'
bearerToken = r['accessToken']
print(bearerToken)

输出

{'accessToken': 'e************************************', 'tokenType': 'Bearer'}

我想达到什么目的?

仅获取 'accessToken' 之后的审查代码,并将新的访问令牌存储在字符串中以在 HTTP 请求中使用它。

注意:'accessToken' 是另一个名为 accessToken 的密钥的值。所以打印键值的传统方法已经用在上面的输出中了。

完整输出:

{
  "accessToken" : {
    "accessToken" : "e******************",
    "tokenType" : "Bearer"
  },
  "refreshToken" : {
    "id" : "6*************",
    "lastAccessedTime" : 1***********,
    "refreshToken" : "e*************"
  }
}

在Python中,您可以使用子字符串来完成您想要的。如果前缀的长度是常数,那么你需要做的就是使用一个具有常数索引的切片,

在您的示例中,看起来您有一个 accessToken 键,并且在该键内是另一个字典,其中包含一个可以在条目之间更改的键。假设你想要在 accessToken 中 e 之后的审查部分,你可以使用:

bearerToken = r['accessToken'][accessToken][1:]

这将为您提供访问令牌“******************”,这是从索引 1 开始的所有内容。如果你只想要整个字符串,你可以省略 [1:] 部分。

解决方法是编辑yeeshue99提供的代码,将第2个值修改为'accessToken'带''标记。 [1:] 也不需要。

解决方案

bearerToken = r['accessToken']['accessToken']