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.