Använd Flasks inbyggda jsonify
funktion, eftersom den är redan utökad för att fungera med datum
:
from Flask import jsonify
@app.route('/temp')
def temp():
# Load database results
# and then ...
return jsonify(data=cur.fetchall())
Datan kommer att returneras som ett objekt med en enda nyckel (data
) som innehåller en array av rader (som antingen kommer att representeras som arrays eller objekt beroende på vad fetchall
returnerar rader som).
Om du behöver serialisera fler typer (som i ditt fall får du tillbaka date
). istället för datetime
instanser måste du åsidosätta Flasks json_encoder
egenskap med en underklass av JSONEncoder
som vet hur man hanterar dina typer:
class SpecializedJSONEncoder(JSONEncoder):
def default(o):
if isinstance(o, date):
return date.strftime("%Y-%m-%d")
else:
super(SpecializedJSONEncoder, self).default(o)
Och sedan kan du ställa in det på din Flask
instans:
app.json_encoder = SpecializedJSONEncoder
Du kommer nu att kunna hantera date
s samt datetime
s.