Verwenden Sie den integrierten jsonify
von Flask
Funktion, da sie bereits erweitert wurde, um mit Datumsangaben zu arbeiten
:
from Flask import jsonify
@app.route('/temp')
def temp():
# Load database results
# and then ...
return jsonify(data=cur.fetchall())
Die Daten werden als Objekt mit einem einzigen Schlüssel zurückgegeben (data
), die ein Array von Zeilen enthält (die entweder als Arrays oder als Objekte dargestellt werden, je nachdem, was fetchall
ist gibt Zeilen zurück als).
Wenn Sie mehr Typen serialisieren müssen (wie in Ihrem Fall, erhalten Sie date
zurück statt datetime
Instanzen müssen Sie den json_encoder
von Flask überschreiben
-Eigenschaft mit einer Unterklasse von JSONEncoder
das weiß, wie man mit Ihren Typen umgeht:
class SpecializedJSONEncoder(JSONEncoder):
def default(o):
if isinstance(o, date):
return date.strftime("%Y-%m-%d")
else:
super(SpecializedJSONEncoder, self).default(o)
Und dann können Sie es auf Ihrem Flask
einstellen Beispiel:
app.json_encoder = SpecializedJSONEncoder
Sie können jetzt mit date
umgehen s sowie datetime
s.