Brug Flasks indbyggede jsonify
funktion, da den allerede er udvidet til at fungere med datoer
:
from Flask import jsonify
@app.route('/temp')
def temp():
# Load database results
# and then ...
return jsonify(data=cur.fetchall())
Dataene vil blive returneret som et objekt med en enkelt nøgle (data
) indeholdende et array af rækker (som enten vil blive repræsenteret som arrays eller objekter afhængigt af hvad fetchall
returnerer rækker som).
Hvis du har brug for at serialisere flere typer (som i dit tilfælde, får du date
tilbage i stedet for datetime
forekomster, skal du tilsidesætte Flasks json_encoder
ejendom med en underklasse JSONEncoder
der ved, hvordan man håndterer dine typer:
class SpecializedJSONEncoder(JSONEncoder):
def default(o):
if isinstance(o, date):
return date.strftime("%Y-%m-%d")
else:
super(SpecializedJSONEncoder, self).default(o)
Og så kan du indstille det på din Flask
eksempel:
app.json_encoder = SpecializedJSONEncoder
Du vil nu være i stand til at håndtere date
s samt datetime
s.