我在 Django REST 框架中有以下自定义异常处理程序。
class ErrorMessage:
def __init__(self, message):
self.message = message
def insta_exception_handler(exc, context):
response = {}
if isinstance(exc, ValidationError):
response['success'] = False
response['data'] = ErrorMessage("Validation error")
return Response(response)
我想要如下所示的 JSON 输出
"success":false,
"data":{ "message" : "Validation error" }
但我收到错误 TypeError: Object of type 'ErrorMessage' is not JSON serializable
。为什么像上面的 ErrorMessage
这样简单的类不能 JSON 序列化?我该如何解决这个问题?
最佳答案
它是不可序列化的,因为它是一个对象
,它应该是dict
、list
或plain value。但是您可以使用魔法属性 __dict__
def insta_exception_handler(exc, context):
response = {}
if isinstance(exc, ValidationError):
response['success'] = False
# like this
response['data'] = ErrorMessage("Validation error").__dict__
return Response(response)
关于python - Django Rest Framework Response is not JSON serializable 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43931937/