I’m using the python requests module to send a RESTful GET to a server, for which I get a response in JSON. The JSON response is basically just a list of lists.

What’s the best way to coerce the response to a native Python object so I can either iterate or print it out using pprint?

Since you’re using requests, you should use the response’s json method.

import requests

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

It autodetects which decoder to use.

You can use json.loads:

import json
import requests

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

This converts a given string into a dictionary which allows you to access your JSON data easily within your code.

Or you can use @Martijn’s helpful suggestion, and the higher voted answer, response.json().

You can use the json response as dictionary directly:

import requests

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

or you can hold the json content as dictionary:

json_res = res.json()

and from this json_res dictionary variable, you can extract any value of your choice

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

Attentions Because this is a dictionary, you should keep your eye on the key spelling and the case, i.e. ‘total’ is not the same as ‘Total’