如何使用 Flask 将复杂对象序列化为 JSON

Mat*_*ana 5 python json flask

我是 Flask 新手,在尝试返回包含另一个对象实例作为字段的对象时遇到一些问题,如下所示:

class Park(object):
    park_id = 0
    address = ""
    services = []
    position = None

    def __init__(self, park_id, address, services, latitude, longitude):
        self.park_id = park_id
        self.address = address
        self.services = services
        self.position = Point(latitude, longitude)
Run Code Online (Sandbox Code Playgroud)

其中 Point 类如下:

class Point(object):
    latitude = None
    longitude = None

    def __init__(self, latitude, longitude):
        self.latitude = latitude
        self.longitude = longitude
Run Code Online (Sandbox Code Playgroud)

当我尝试返回 Park 实例时

@app.route('/')
def test():
    park = Park(....)
    return jsonify(park])
Run Code Online (Sandbox Code Playgroud)

我收到此错误:TypeError: Object of type 'Park' is not JSON serializable

小智 0

Python 的默认 json 模块默认不会序列化复杂对象。

您可以使用像jsonpickle这样的库;或者只是在类中实现一个将对象转换为字典的to_dict方法,这样您就可以调用.Parkjsonify(park.to_dict())