TypeError:字符串索引必须为整数-JSON Python

时间:2020-10-30 09:09:36

标签: python json python-3.x python-requests

所以我得到了错误:

Traceback (most recent call last):
 File "C:/Users/User/PycharmProjects/db/dm testing.py", line 12, in <module>
   for id in ids['id']:
TypeError: string indices must be integers

使用以下代码:

import requests
import json

token = 'mytoken'

headers = {
    'Authorization': token,
}

r = requests.get('https://canary.discordapp.com/api/v6/users/@me/channels', headers=headers).json()
ids=json.dumps(r)
for id in ids['id']:
    print(id)

JSON如下:

[
  {
    "id": "771634716042461195", 
  },
  {
    "id": "771654126345781278", 
  }, 
  {
    "id": "771658044526034967", 
  }
]

我想打印出通道ID,在这种情况下是: 771634716042461195和771654126345781278。

任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

您正在将解析的json转换回字符串,但是您希望它是字典,而不是字符串。您可以完全删除第二行。

r = requests.get('https://canary.discordapp.com/api/v6/users/@me/channels', headers=headers).json()
for id in r['id']:
    print(id)

答案 1 :(得分:0)

好,所以我找到了解决方案,这是我的最终代码:

import requests
import json

token = 'mytoken'

headers = {
    'Authorization': token,
}

r = requests.get('https://canary.discordapp.com/api/v6/users/@me/channels', headers=headers).json()
x = 0

for i in range(len(r)):
    print(r[x]['id'])
    x+=1

它打印通道的所有ID。希望这可以帮助其他人。