I'm pretty new using Flask. So, I've been looking for answers, but I couldn't find them.
Here is my app:
from flask import Flask, request
from flask_restful import Resource, Api
import pandas as pd
import numpy as np
from datetime import date
app = Flask(__name__)
api = Api(app)
class NasaTLX(Resource):
def post(self):
try:
parametros = request.get_json()
avaliado = parametros['avaliado']
avaliador = parametros['avaliador']
avaliador_assinatura = parametros['avaliador_assinatura']
setor_dep = parametros['setor_dep']
# some calculations here
return{ "Answer" : "Calculated successfully"}
except Exception as e:
return {'Answer': e}
api.add_resource(NasaTLX, '/nasatlx')
if __name__ == "__main__":
app.run(debug=True)
Then I'm getting the error:
TypeError: Object of type TypeError is not JSON serializable
Full error:
127.0.0.1 - - [09/Jun/2022 21:58:24] "POST /nasatlx HTTP/1.1" 500 -
Traceback (most recent call last):
File "C:\Users\table\Documents\Ergo_API\NASA_API\ambiente_virtual\ambiente_virtual\lib\site-packages\flask\app.py", line 2095, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\table\Documents\Ergo_API\NASA_API\ambiente_virtual\ambiente_virtual\lib\site-packages\flask\app.py", line 2080, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\table\Documents\Ergo_API\NASA_API\ambiente_virtual\ambiente_virtual\lib\site-packages\flask_restful\__init__.py", line 271, in error_router
return original_handler(e)
File "C:\Users\table\Documents\Ergo_API\NASA_API\ambiente_virtual\ambiente_virtual\lib\site-packages\flask\app.py", line 2077, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\table\Documents\Ergo_API\NASA_API\ambiente_virtual\ambiente_virtual\lib\site-packages\flask\app.py", line 1525, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\table\Documents\Ergo_API\NASA_API\ambiente_virtual\ambiente_virtual\lib\site-packages\flask_restful\__init__.py", line 271, in error_router
return original_handler(e)
File "C:\Users\table\Documents\Ergo_API\NASA_API\ambiente_virtual\ambiente_virtual\lib\site-packages\flask\app.py", line 1523, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\table\Documents\Ergo_API\NASA_API\ambiente_virtual\ambiente_virtual\lib\site-packages\flask\app.py", line 1509, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
File "C:\Users\table\Documents\Ergo_API\NASA_API\ambiente_virtual\ambiente_virtual\lib\site-packages\flask_restful\__init__.py", line 471, in wrapper
return self.make_response(data, code, headers=headers)
File "C:\Users\table\Documents\Ergo_API\NASA_API\ambiente_virtual\ambiente_virtual\lib\site-packages\flask_restful\__init__.py", line 500, in make_response
resp = self.representations[mediatype](data, *args, **kwargs)
File "C:\Users\table\Documents\Ergo_API\NASA_API\ambiente_virtual\ambiente_virtual\lib\site-packages\flask_restful\representations\json.py", line 21, in output_json
dumped = dumps(data, **settings) + "\n"
File "c:\users\table\appdata\local\programs\python\python38\lib\json\__init__.py", line 234, in dumps
return cls(
File "c:\users\table\appdata\local\programs\python\python38\lib\json\encoder.py", line 201, in encode
chunks = list(chunks)
File "c:\users\table\appdata\local\programs\python\python38\lib\json\encoder.py", line 431, in _iterencode
yield from _iterencode_dict(o, _current_indent_level)
File "c:\users\table\appdata\local\programs\python\python38\lib\json\encoder.py", line 405, in _iterencode_dict
yield from chunks
File "c:\users\table\appdata\local\programs\python\python38\lib\json\encoder.py", line 438, in _iterencode
o = _default(o)
File "c:\users\table\appdata\local\programs\python\python38\lib\json\encoder.py", line 179, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type TypeError is not JSON serializable
Here is my calling from Postman (Content-Type is already set up as application/json):
{
"avaliado" : "Maria",
"avaliador" :"Jesi",
"avaliador_assinatura" : "Bruno",
"setor_dep" : 8
}
I found something related to flask.json.JSONEncoder, but I have no idea how to implement that, and even that should fix the problem.
How can fix that?
Thank you.