夸脱 JSON 编码

Quart JSON encoding

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

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

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

是否可以定义 encoder/decoder foreach Class 并让 quart 处理其余部分?

假设你想使用 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 以避免名称混淆问题。