Problem
I’m not sure I understand the flask’s function. jsonify is a technique that converts a string into a j I try to convert this to a JSON string:
data = {"id": str(album.id), "title": album.title}
However, what I receive with json.dumps is not the same as what I get with flask. jsonify.
json.dumps(data): [{"id": "4ea856fd6506ae0db42702dd", "title": "Business"}]
flask.jsonify(data): {"id":…, "title":…}
Obviously I need to get a result that looks more like what json.dumps returns. What am I doing wrong?
Asked by Sergei Basharov
Solution #1
The flask jsonify() function returns a flask. For use with json responses, utilize a Response() object that already has the necessary content-type header ‘application/json’. The json.dumps() function, on the other hand, will just return an encoded text, requiring the MIME type header to be manually added.
For a complete reference, see the jsonify() function.
Edit: I’ve also found that jsonify() can use kwargs or dictionaries, whereas json.dumps() can also handle lists and other data types.
Answered by Kenneth Wilke
Solution #2
You can do:
flask.jsonify(**data)
or
flask.jsonify(id=str(album.id), title=album.title)
Answered by mikerobi
Solution #3
This is 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')
In that sequence, the json module used is either simplejson or json. current app is a reference to your application’s Flask() object. The Response() class is referenced by response class().
Answered by Michael Ekoka
Solution #4
The choice of one or another depends on what you intend to do. From what I do understand:
Answered by chaiyachaiya
Solution #5
consider
data={'fld':'hello'}
now
jsonify(data)
will return ‘fld’:’hello’ and
json.dumps(data)
gives
"<html><body><p>{'fld':'hello'}</p></body></html>"
Answered by Govind Kelkar
Post is based on https://stackoverflow.com/questions/7907596/json-dumps-vs-flask-jsonify