所以,基本上我有一个循环来检索我需要的所有API标记,以便运行另一个get调用。
以下是我的代码的一部分:
tokens = [result['apiToken'] for result in data_2['result']['apiToken']]
for i in tokens:
url = "https://swag.com"
headers = {
'x-api-token': i
}
response = requests.get(url, headers=headers)
data = json.loads(response.text)
这是json的一个例子:
{"result":{"apiToken":"sdfagdsfgdfagfdagda"},"meta":
{"httpStatus":"200 - OK","requestId":"12343-232-424332428-432-
4234555","notice":"Request proxied. For faster response times, use this
host instead: swag.com"}}
使用我的代码,我在第一行收到错误。
typeerror字符串索引必须是整数
我只是不知道如何只提取API令牌。
data_2:
{'meta': {'httpStatus': '200 - OK', 'requestId': 'ewrfsdafasffds'}, 'result': {'apiToken': 'sdfdagfdfsgsd'}}
答案 0 :(得分:2)
根据你的评论
typeerror字符串索引必须是整数
尝试更新列表理解(假设data_2
是一个dicts列表而不是JSON
字符串)。看起来你正在迭代令牌字符。
tokens = [result['apiToken'] for result in data_2['result']]
for i in tokens:
url = "https://swag.com"
headers = {
'x-api-token': i
}
response = requests.get(url, headers=headers)
data = json.loads(response.text)
<强> EDIT2 强>
因此data_2
可能是JSON
字符串,而不是字典(基于评论)。在这种情况下,您可以尝试以下方法:
import json
tokens = [result['apiToken'] for result in json.loads(data_2)]
for i in tokens:
url = "https://swag.com"
headers = {
'x-api-token': i
}
response = requests.get(url, headers=headers)
data = json.loads(response.text)
<强> EDIT3 强>
好的,所以
在代码的早些时候,我得到了一个名为response.text的响应,我做到了 data_2 = json.loads(resopnse.text)
因此data_2
是一本字典。
tokens = [data_2['result']['apiToken']]
for i in tokens:
url = "https://swag.com"
headers = {
'x-api-token': i
}
response = requests.get(url, headers=headers)
data = json.loads(response.text)