как достать элементы с ответа сервера
Я отправляю запрос
vk.search.getHints(q='Привет', limit=10, search_global=1)
получаю ответ в форма json (Насколько я понимаю) как мне достать определенные строки типа id бесед человека и тд?
Ответы (1 шт):
Давайте разберемся, что в Python есть JSON-объект. Кажется, в общем виде это будет полезно упомянуть. Он представляется в виде комбинации типов данных dict и list, а также числа, строки и прочее.
Типичный JSON-объект:
{
"key": {
"nested_key_1": 1,
"items": [
{"item_key": "ABC"}
]
}
}
Если декодировать его в объект языка Python и присвоить переменной obj, то до всех внутренних структур можно доступиться.
print(obj['key']) # { "nested_key_1": 1, "items": [ {"item_key": "ABC"} ] }
print(obj['key']['nested_key']) # 1
print(obj['key']['items']) # [ {"item_key": "ABC"} ]
print(obj['key']['items'][0]) # {"item_key": "ABC"}
print(obj['key']['items'][0]['item_key']) # ABC
Не знаю, что за библиотека, но любая на запрос vk.search.getHints(q='Привет', limit=10, search_global=1) должна уже возвращать правильный объект, с которым можем взаимодействовать упомянутым выше образом.
Если открыть страницу с демонстрацией того, как работает запрос (надо быть залогиненным в браузере в ВК, если не быть залогиненным, то просто откроется подробная документация по методу) https://vk.com/dev/search.getHints?params%5Bq%5D=Привет¶ms%5Blimit%5D=2¶ms%5Bsearch_global%5D=1¶ms%5Bv%5D=5.124 и изучить структуру объекта, то достать id людей и групп в список можно так:
group_ids = []
profile_ids = []
resp = vk.search.getHints(q='Привет', limit=10, search_global=1)
for item in resp['response']['items']:
if item['type'] == 'group':
group_ids.append(item['group']['id'])
elif item['type'] == 'profile':
profile_ids.append(item['profile']['id'])