TypeError: <Response 36 bytes [200 OK]> is not JSON serializable

Codeformer picture Codeformer · Dec 25, 2016 · Viewed 9.3k times · Source

I am writing web service using restful flask. The below code giving me this error - TypeError: is not JSON serializable

from flask import jsonify
from flask_restful import Resource
class Recipe(Resource):
   def get(self):
      return jsonify({"status": "ok", "data": ""}), 200

How ever this code is working fine

from flask import jsonify
from flask_restful import Resource
class Recipe(Resource):
   def get(self):
      return jsonify({"status": "ok", "data": ""})

The Below code is also working

from flask import jsonify
from flask_restful import Resource
class Recipe(Resource):
def get(self):
   return {"status": "ok", "data": ""},200

I have noticed that I get the error when I use jsonify and response code together, I need to use jsonfy because I will be sending object as response.

Answer

Codeformer picture Codeformer · Dec 25, 2016

Got the solution - Flask has this function called make_response

from flask import jsonify, make_response

class Recipe(Resource):
   def get(self):
   return make_response(jsonify({"status": "ok", "data": ""}), 201)