Метод get_json
Метод get_json применяется к объекту ответа
TestResponse, который возвращается при
тестировании клиента Flask. Метод десериализует
тело ответа как JSON и возвращает соответствующий
Python-объект (словарь или список). Если тело
ответа не содержит валидный JSON, будет выброшено
исключение.
Первым необязательным параметром передаётся
force - булево значение. Если установить
True, метод попытается разобрать тело
ответа как JSON, даже если заголовок
Content-Type не равен
application/json. Вторым необязательным
параметром передаётся silent - если
True, метод вернёт None вместо
выброса исключения при ошибке разбора. Третьим
параметром передаётся cache - кешировать
ли результат разбора.
Синтаксис
response.get_json(force=False, silent=False, cache=True)
Пример
Давайте создадим приложение, которое возвращает JSON-ответ, и проверим его через тестовый клиент:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api/user')
def user():
return jsonify({'name': 'abcde', 'age': 25})
Теперь напишем тест, который использует метод
get_json:
from app import app
client = app.test_client()
response = client.get('/api/user')
res = response.get_json()
print(res)
Результат выполнения кода:
{'name': 'abcde', 'age': 25}
Пример
Давайте создадим приложение, которое возвращает JSON-массив:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api/items')
def items():
return jsonify(['a', 'b', 'c', 'd', 'e'])
Проверим результат через тестовый клиент:
from app import app
client = app.test_client()
response = client.get('/api/items')
res = response.get_json()
print(res)
Результат выполнения кода:
['a', 'b', 'c', 'd', 'e']
Пример
Давайте используем параметр silent, чтобы
избежать исключения при невалидном JSON:
from flask import Flask
app = Flask(__name__)
@app.route('/api/text')
def text():
return 'hello'
Проверим результат с параметром silent=True:
from app import app
client = app.test_client()
response = client.get('/api/text')
res = response.get_json(silent=True)
print(res)
Результат выполнения кода:
None
Смотрите также
-
класс
TestResponse,
который представляет ответ тестового клиента -
метод
get_data,
который возвращает тело ответа в виде байтов -
атрибут
json,
который содержит разобранный JSON-ответ -
атрибут
content_type,
который содержит MIME-тип ответа