J'essaie de retourner une liste de dictionnaires dans le cadre d'une demande d'obtention. J'appelle la fonction ci-dessous. sélectionné_data est comme p> mais, je reçois l'erreur ci-dessous p> TypeError (REP (o) + "n'est pas JSON Serializable")
TypeError: DateTime.Date (2019, 1, 15) n'est pas JSON SERIALISABLE STRY> P> J'ai essayé d'utiliser json.dumps comme Ce débordement de pile thread suggère mais obtient toujours la même erreur. P> Toute aide est appréciée. p> p>
3 Réponses :
Vous devez réaliser un client JSONENCODER
import json
from datetime import date
from datetime import datetime
class JsonExtendEncoder(json.JSONEncoder):
"""
This class provide an extension to json serialization for datetime/date.
"""
def default(self, o):
"""
provide a interface for datetime/date
"""
if isinstance(o, datetime):
return o.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(o, date):
return o.strftime('%Y-%m-%d')
else:
return json.JSONEncoder.default(self, o)
if __name__ == '__main__':
d = {'now': datetime.now(), 'today': date.today(), 'i': 100}
ds = json.dumps(d, cls=JsonExtendEncoder)
print "ds type:", type(ds), "ds:", ds
l = json.loads(ds)
C'est une bonne idée d'utiliser isoformat code> au lieu de StrfTime code>, car il s'agit d'une norme Web que beaucoup de bibliothèques JavaScript comme.
Essayez l'un des éléments suivants
selected_data["date"] = selected_data["date"].isoformat()
selected_data["date"] = selected_data["date"].strftime("%Y-%m-%d %H:%M:%S:%f")
selected_data["date"] = str(selected_data["date"])
Ceci a fonctionné, sélectionné_data ["date"] = sélectionné_data ["date"]. ISOFORMAT (). Accepter la réponse, merci
Voici mon approche de cela. Pour les utilisateurs reposants de la fiole et du flacon
Avant
jsonifty () code>, transformerdatetime.date code> à chaîne ouhorodatage code>.Hey, fini par faire ça. Merci d'avoir répondu.