#python #json #webhooks
#python #json #webhooks
Вопрос:
Я борюсь с фильтрацией данных json из webhook. Я не слишком уверен, что здесь неверно / неправильно:
headers = {
'client-id': 'my twitch client id',
'Authorization': 'my twitch oauth key',
}
params = (
('query', x),
)
response = requests.get('https://api.twitch.tv/helix/search/channels', headers=headers, params=params)
final = response.text["is_live"]
print(final)
Это выдает ошибку:
Ошибка типа: строковые индексы должны быть целыми числами
Однако я не уверен, как я мог бы превратить данные json из webhook в interger?
РЕДАКТИРОВАТЬ: запрос ‘x’ извлекается из моего MongoDB и работает нормально.
response.text возвращает:
{"data":[{"broadcaster_language":"en","display_name":"foxygaming09","game_id":"32982","id":"87678172","is_live":false,"tag_ids":[],"thumbnail_url":"https://static-cdn.jtvnw.net/jtv_user_pictures"}]
Комментарии:
1. Используйте
response.json
вместоresponse.text
2.
TypeError: json() takes 1 positional argument but 2 were given
3. Я уверен, что я бы превратил данные json из webhook в целое число Вы уверены, что проблема связана с тем, что данные запроса не являются int?
4. @AMC, формат / тип данных кажется нормальным. Я просто не знаю, как бы я отфильтровал определенную его часть. Даже если это не int, есть ли способ обойти это?
5. @Pois Я говорю об ошибке типа, о которой вы рассказали выше.
Ответ №1:
Обнаружена проблема, пожалуйста, используйте.
То, что возвращается, — это JSON.
Следует использовать .json()
.
И выполнять манипуляции с данными.
final = response.json()
final = {"data":[{"broadcaster_language":"en","display_name":"","game_id":"","id":"","is_live":false,"tag_ids":[],"thumbnail_url":""}]
print(final['data'][0]['is_live'])
вывод
false
Я могу это сделать, если предоставленный вами response.text неверен.
Комментарии:
1. привет, это приводит к синтаксической ошибке в апострофах, граничащих с данными.
2. ОК. Это может быть потому, что я плохо понимаю ваш английский, я думал, вы просто хотите получить значение
['is_live']
.3. да, я только хочу получить значение его live.
4. Но при использовании указанного вами кода выше появляется синтаксическая ошибка.
5.
final = {"data":[{"broadcaster_language":"en","display_name":"","game_id":"","id":"","is_live":false,"tag_ids":[],"thumbnail_url":""}]
print(final'data'][0]['is_live'])
вывод -> false