0

作为第一次Quart使用的用户,我很难定义 json 编码器/解码器。我有这样的嵌套对象:

class ObjA:
    def __init__(self, name, color):
        self.name = name
        self.__color = color

class Color:
    def __init__(self, t):
        self.t = t

是否可以为每个类定义编码器/解码器并让 quart 处理其余部分?

4

1 回答 1

2

假设您想使用该jsonify功能,您可以通过定义自定义 JSONEncoder 来做到这一点,

from quart.json import JSONEncoder

class CustomJSONEncoder(JSONEncoder):

    def default(self, obj):
        if isinstance(obj, Color):
            return obj.t
        elif isinstance(obj, ObjA):
            return {
                'name': obj.name,
                '_color': self.default(obj._color),
            }
        else:
            return JSONEncoder.default(self, obj)

app = Quart(__name__)
app.json_encoder = CustomJSONEncoder

注意我已经更改了__color变量_color以避免名称修改问题。

于 2018-06-05T20:39:41.093 回答