给你
EqltByGene一个额外的方法来返回字典:
class EqltByGene(object): # def serialize(self): return { 'gene_id': self.gene_id, 'gene_symbol': self.gene_symbol, 'p_value': self.p_value, }然后使用列表推导将你的对象列表转换为可序列化值的列表:
jsonify(eqtls=[e.serialize() for e in my_list_of_eqtls])
另一种方法是为该
json.dumps()函数编写一个钩子函数,但是由于你的结构很简单,因此列表理解和自定义方法更简单。
你也可以冒险和继承类别
flask.json.JSONEnprer; 给它一个
default()将
EqltByGene()实例转换为可序列化值的方法:
from flask.json import JSonEnprerclass MyJSonEnprer(JSONEnprer): 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(MyJSONEnprer, self).default(obj)并将其分配给app.json_enprer属性:
app = Flask(__name__)app.json_enprer = MyJSONEnprer
并将你的列表直接传递给jsonify():
return jsonify(my_list_of_eqtls)



