【发布时间】:2015-05-08 17:35:15
【问题描述】:
我目前有以下:
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
}
【问题讨论】:
-
我认为这不是缩进(
serialize是模块级别)?另外,Error和MainError之间的关系(或层次结构)是什么?如何执行? -
@ReutSharabani 我没有收到任何缩进错误。我写的方式有问题吗?
-
这不是错误,但序列化可能应该是
MainError的一部分。不过我不确定。 -
哦,哎呀..是的,对不起!当我发布问题时,我没有正确缩进。我会解决的。
-
我把它们写在同一个
module中。MainError对象将包含Error对象的列表 (errorsList)。