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.