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.