我有一个类看起来像下面:瓶jsonify:对象不是可迭代
class Sound(SoundJsonSerializer):
def __init__(self, name, length):
self.name = name
self.length = length
其中SoundJsonSerializer使我的自定义JSONEncoder序列化此对象到JSON:
{
"name": "foobar",
"length": 23.4
}
现在我想一个我的要求完全符合上述JSON的要求。
@app.route('/sounds/<soundid>')
def get_sound(soundid):
s = Sound("foobar", 23.4)
return jsonify(s)
产生一个错误声明s
是不可迭代的,这是真的。如何让该方法返回我想要的JSON?
我知道我可以通过明确从我Sound
对象创建的字典是这样做的:
return jsonify({"name": s.name, "length": s.length})
但这似乎真丑我。什么是实现我的目标的首选方式?
其实,我宁愿你认为“丑”的方式。如果你经常这样做,那么可能将字典创建成一个函数,该函数接受对象和一系列表示你想要包含的属性(或者可能被排除)的字符串并创建字典(使用'dir()'和'getattr的()')。 –
是的,这个问题很烦人,所以我决定[修补Flask使其工作](https://github.com/mitsuhiko/flask/pull/1209)。 –