формат 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 возвращает. Что я делаю не так?

604   4  

4 ответов:

The jsonify() функция в колбе возвращает a flask.Response() объект, который уже имеет соответствующий заголовок типа содержимого "application / json" для использования с ответами json. В то время как,json.dumps() метод просто вернет закодированную строку, которая потребует ручного добавления заголовка типа MIME.

подробнее о jsonify() функции здесь для полной справки.

изменить: Кроме того, я заметил, что jsonify() обрабатывает кварги или словари, в то время как json.dumps() дополнительно поддерживает списки и другие.

Вы можете сделать:

flask.jsonify(**data)

или

flask.jsonify(id=str(album.id), title=album.title)

это 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

    Ничего не найдено.