Object of type 'TypeError' is not JSON serializable

Ray picture Ray · Mar 28, 2018 · Viewed 8k times · Source

I try to build API with Django rest framework

And I got Object of

type 'TypeError' is not JSON serializable

What should I do to fix?

Here's my view.py

class NewsViewSet(viewsets.ModelViewSet):
    queryset = News.objects.all()
    serializer_class = NewsSerializer

    def list(self, request, **kwargs):
        try:
            nba = query_nba_by_args(**request.query_params)
            serializer = NewsSerializer(nba['items'], many=True)
            result = dict()
            result['data'] = serializer.data
            result['draw'] = nba['draw']
            result['recordsTotal'] = nba['total']
            result['recordsFiltered'] = nba['count']
            return Response(result, status=status.HTTP_200_OK, template_name=None, content_type=None)

        except Exception as e:
            return Response(e, status=status.HTTP_404_NOT_FOUND, template_name=None, content_type=None)

Answer

neverwalkaloner picture neverwalkaloner · Mar 28, 2018

Django cannot convert Exception object to JSON format and raise error. To fix it you should convert error to string and pass result to response:

except Exception as e:
    return Response(str(e), status=status.HTTP_404_NOT_FOUND, template_name=None, content_type=None)