формат JSON.свалки против колбы.jsonify
Я не уверен, что понимаю цель flask.jsonify метод. Я пытаюсь сделать строку JSON из этого:
data = {"id": str(album.id), "title": album.title}
но то, что я получаю с json.dumps отличается от того, что я получаю с flask.jsonify.
json.dumps(data): [{"id": "4ea856fd6506ae0db42702dd", "title": "Business"}]
flask.jsonify(data): {"id":…, "title":…}
очевидно, мне нужно, чтобы получить результат, который больше похож на то, что json.dumps возвращает. Что я делаю не так?
4 ответов:
The
jsonify()функция в колбе возвращает aflask.Response()объект, который уже имеет соответствующий заголовок типа содержимого "application / json" для использования с ответами json. В то время как,json.dumps()метод просто вернет закодированную строку, которая потребует ручного добавления заголовка типа MIME.подробнее о
jsonify()функции здесь для полной справки.изменить: Кроме того, я заметил, что
jsonify()обрабатывает кварги или словари, в то время какjson.dumps()дополнительно поддерживает списки и другие.
это
flask.jsonify()def jsonify(*args, **kwargs): if __debug__: _assert_have_json() return current_app.response_class(json.dumps(dict(*args, **kwargs), indent=None if request.is_xhr else 2), mimetype='application/json')The
jsonмодуль используется либоsimplejsonилиjsonв таком порядке.current_appссылка наFlask()объект, т. е. приложение.response_class()ссылка наResponse()класса.
выбор того или иного зависит от того, что вы собираетесь делать. Из того, что я понимаю:
jsonify было бы полезно, когда вы строите API кто-то будет запрашивать и ожидать json в ответ. Например: REST GitHub API может использовать этот метод для ответа на ваш запрос.
свалки, это больше о формировании объекта data / python в json и работе над ним внутри вашего приложения. Например, мне нужно пройти объект для моего слоя представления, где некоторые javascript будет отображать график. Вы будете кормить JavaScript в JSON-файл, который генерируется по помойкам.
Comments