我目前有以下几点:
class MainError:
def __init__(self, code, message, errorsList):
self.code = code
self.message = message
# List of Error objects
self.errorsList = errorsList
def serialize(self):
return {
'mainErrorCode': self.code,
'message': self.message,
'errors': self.errorsList
}
class Error:
def __init__(self, field, message):
self.field = field
self.message = message
所以我想以以下格式返回
JSON
:{
"mainErrorCode" : 1024,
"message" : "Validation Failed",
"errors" : [
{
"field" : "first_name",
"message" : "First name cannot have fancy characters"
},
{
"field" : "password",
"message" : "Password cannot be blank"
}
]
}
目前我收到错误:
TypeError: <errors.Error instance at 0x329b908> is not JSON serializable
我正在使用
Flask's
Jsonify
。return jsonify(errors=mainError.serialize())
我猜是
list
导致了这个问题。有人可以帮助我以正确的方式解决这个问题吗?PS:我的方法中可能还有其他一些明显的错误(我对 Python 很陌生 =/)
更新的解决方案
def serialize(self):
return {
'mainErrorCode': self.code,
'message': self.message,
'errors': [error.serialize() for error in self.errorsList]
}
class Error:
def __init__(self, field, message):
self.field = field
self.message = message
def serialize(self):
return {
'field': self.field,
'message': self.message
}
最佳答案
正如错误所暗示的那样,您有一个不可序列化的 Error
对象列表。所以让它们可序列化:
class Error:
def __init__(self, field, message):
self.field = field
self.message = message
def serialize(self):
return {
'field': self.field,
'message': self.message
}
关于python - Jsonify 自定义对象列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28910217/