Вопрос-Ответ

What's the best way to parse a JSON response from the requests library?

Какой лучший способ проанализировать ответ JSON из библиотеки запросов?

Я использую requests модуль python для отправки RESTful GET на сервер, для которого я получаю ответ в формате JSON. Ответ JSON - это, по сути, просто список списков.

Какой лучший способ принудительно передать ответ собственному объекту Python, чтобы я мог либо повторить, либо распечатать его с помощью pprint?

Переведено автоматически
Ответ 1

Поскольку вы используете requests, вам следует использовать метод ответа json.

import requests

response = requests.get(...)
data = response.json()

Он автоматически определяет, какой декодер использовать.

Ответ 2

Вы можете использовать json.loads:

import json
import requests

response = requests.get(...)
json_data = json.loads(response.text)

Это преобразует заданную строку в словарь, который позволяет вам легко получить доступ к вашим данным JSON в вашем коде.

Или вы можете воспользоваться полезным предложением @Martijn и ответом, получившим наибольшее количество голосов, response.json().

Ответ 3

Вы можете использовать ответ json непосредственно в качестве словаря:

import requests

res = requests.get('https://reqres.in/api/users?page=2')
print(f'Total users: {res.json().get("total")}')

или вы можете сохранить содержимое json в виде словаря:

json_res = res.json()

и из этой json_res словарной переменной вы можете извлечь любое значение по вашему выбору

json_res.get('total')
json_res["total"]

Внимание Поскольку это словарь, вам следует следить за написанием ключа и регистром, т. е. "total" - это не то же самое, что "Total"

Ответ 4

Какой лучший способ проанализировать ответ JSON из библиотеки запросов?


Лучшие ответы показывают, казалось бы, два разных способа преобразовать ответ json в объект Python, но по сути они одинаковы.

response.json() отличается в двух местах:

Таким образом, в 99,9999% случаев response.json() и json.loads(response.text) выдадут один и тот же словарь. Он может отличаться, если исходный json имеет какую-то странную кодировку.

python json python-requests