Flask中自定义JSONEncoder

正在用Flask写个小项目,要实现将自定义类型转化成json格式。Flask一般用jsonify来使接口返回json数据,实现一个Flask内使用的JSONEncoder。

from flask.json import JSONEncoder

class MyJSONEncoder(JSONEncoder):
    def default(self, obj):
        if isinstance(obj, EqltByGene):
            return {
                'gene_id': obj.gene_id, 
                'gene_symbol': obj.gene_symbol,
                'p_value': obj.p_value,
            }
        return super(MyJSONEncoder, self).default(obj)

app = Flask(__name__)
app.json_encoder = MyJSONEncoder

这样在使用jsonify的时候,就可以将MyObject类型的实例转化到json格式。stackoverflow上参考:轻戳

有兴趣的可以考虑几个问题:
1. 如果项目中有很多自定义Class,都有这个需求,JSONEncoder的实现似乎会很丑陋,有什么好的方式?
2. 同一个Class在不同的场景,json后要保留的字段差别如果很大,该如果实现?

目前心里有解决方案,不能算很差,但也许有很好的。

——

走自己的路,输要输得清清楚楚,赢要赢得理所当然。别人嘴里的优秀如空中楼阁,越高心越慌。自信源于勤劳。