如何从JSON列表中获取所有API令牌

时间:2016-09-27 20:47:58

标签: python json

所以,基本上我有一个循环来检索我需要的所有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'}}

1 个答案:

答案 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)