Použijte vestavěný jsonify ve Flasku
funkce, protože je již rozšířena o práci s daty
:
from Flask import jsonify
@app.route('/temp')
def temp():
# Load database results
# and then ...
return jsonify(data=cur.fetchall())
Data budou vrácena jako objekt s jediným klíčem (data ) obsahující pole řádků (které budou buď reprezentovány jako pole nebo objekty v závislosti na tom, co fetchall vrátí řádky jako).
Pokud potřebujete serializovat více typů (jako ve vašem případě, vracíte se date spíše než datetime instancích, budete muset přepsat Flaskův json_encoder
vlastnost s podtřídou JSONEncoder
který ví, jak zacházet s vašimi typy:
class SpecializedJSONEncoder(JSONEncoder):
def default(o):
if isinstance(o, date):
return date.strftime("%Y-%m-%d")
else:
super(SpecializedJSONEncoder, self).default(o)
A pak to můžete nastavit na Flask instance:
app.json_encoder = SpecializedJSONEncoder
Nyní budete moci zpracovat date s a také datetime s.