РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
577 of 643 menu

Класс JSONProvider

Класс JSONProvider применяется для настройки преобразования данных в формат JSON и обратно. Он отвечает за сериализацию объектов Python в JSON-строку и десериализацию JSON-строки в объекты Python. Экземпляр класса хранится в атрибуте app.json. По умолчанию Flask использует встроенную реализацию DefaultJSONProvider, основанную на модуле json стандартной библиотеки.

Класс предоставляет методы dumps, loads и response, а также атрибуты ensure_ascii, sort_keys и compact для управления форматированием вывода. Заменить провайдер можно, присвоив новое значение атрибуту app.json или создав собственный подкласс.

Синтаксис

from flask.json.provider import DefaultJSONProvider app.json = DefaultJSONProvider(app)

Атрибуты

Класс DefaultJSONProvider имеет следующие настраиваемые атрибуты:

ensure_ascii - если True, все не-ASCII символы экранируются последовательностями \uXXXX. По умолчанию True.

sort_keys - если True, ключи словаря сортируются по алфавиту при сериализации. По умолчанию True.

compact - если None, формат вывода определяется настройкой app.config["JSONIFY_PRETTYPRINT_REGULAR"]. Если True, вывод будет компактным, если False - с отступами.

Пример

Давайте посмотрим, как Flask сериализует словарь в JSON-ответ по умолчанию:

from flask import Flask, jsonify app = Flask(__name__) @app.route('/') def index(): res = {'name': 'abcde', 'age': 25} return jsonify(res)

Результат выполнения кода для адреса /:

{"age":25,"name":"abcde"}

Пример

Давайте настроим провайдер так, чтобы ключи не сортировались и вывод был с отступами:

from flask import Flask, jsonify from flask.json.provider import DefaultJSONProvider app = Flask(__name__) class MyProvider(DefaultJSONProvider): sort_keys = False app.json = MyProvider(app) app.json.compact = False @app.route('/') def index(): res = {'name': 'abcde', 'age': 25} return jsonify(res)

Результат выполнения кода для адреса /:

{ "name": "abcde", "age": 25 }

Пример

Давайте воспользуемся методом dumps напрямую для сериализации объекта:

from flask import Flask app = Flask(__name__) with app.app_context(): res = app.json.dumps({'name': 'abcde'}) print(res)

Результат выполнения кода:

'{"name": "abcde"}'

Пример

Давайте воспользуемся методом loads для десериализации JSON-строки:

from flask import Flask app = Flask(__name__) with app.app_context(): res = app.json.loads('{"name": "abcde"}') print(res)

Результат выполнения кода:

{'name': 'abcde'}

Смотрите также

  • метод dumps,
    который сериализует объект в JSON-строку
  • метод loads,
    который десериализует JSON-строку в объект
  • метод response,
    который создаёт JSON-ответ
  • функцию json,
    которая возвращает текущий JSON-провайдер
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить