Gebruik Flask's ingebouwde jsonify
functie, aangezien het al is uitgebreid om met datums te werken
:
from Flask import jsonify
@app.route('/temp')
def temp():
# Load database results
# and then ...
return jsonify(data=cur.fetchall())
De gegevens worden geretourneerd als een object met een enkele sleutel (data
) met een array van rijen (die ofwel worden weergegeven als arrays of objecten, afhankelijk van wat fetchall
retourneert rijen als).
Als u meer typen moet serialiseren (zoals in uw geval, krijgt u date
terug) in plaats van datetime
instanties, moet u Flask's json_encoder
overschrijven
eigenschap met een subklasse van JSONEncoder
die weet hoe hij met uw typen moet omgaan:
class SpecializedJSONEncoder(JSONEncoder):
def default(o):
if isinstance(o, date):
return date.strftime("%Y-%m-%d")
else:
super(SpecializedJSONEncoder, self).default(o)
En dan kun je het instellen op je Flask
voorbeeld:
app.json_encoder = SpecializedJSONEncoder
U kunt nu date
verwerken s evenals datetime
v.