python - Jsonify 自定义对象列表

标签 python json flask

我目前有以下内容:

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/

相关文章:

python - 从不同的 .py 文件调用函数时找不到 Errno 2 文件

python - 如何在 Python 中保存列表和访问列表中的值---.txt 文件

python - 尝试发送带有代理属性的 Azure 服务总线消息时出现 400 错误

php - PHP 会自动将数字转换为字符串吗?

python - mod_wsgi : How to run different apps under single domain?

python - PyQt5:带 QAction 的键盘快捷键

javascript - 无法使用 JSON.parse 解析字符串

ruby-on-rails - 在没有 GCC 的情况下使用 Bundler 安装 JSON Gem

javascript - 是否可以使用 Javascript 变量作为 Flask 模板中 Python 列表的索引?

Python 通过 http 发送数据