gpt4 book ai didi

python - Jsonify 自定义对象列表

转载 作者:行者123 更新时间:2023-11-28 16:34:02 25 4
gpt4 key购买 nike

我目前有以下内容:

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 的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com