Maison >développement back-end >Tutoriel Python >Comment résoudre l'erreur « datetime.datetime n'est pas sérialisable JSON » en Python ?

Comment résoudre l'erreur « datetime.datetime n'est pas sérialisable JSON » en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-11 01:58:13520parcourir

How to Solve the

Surmonter l'erreur "datetime.datetime non sérialisable JSON"

Lors de la sérialisation d'un dictionnaire Python contenant un objet datetime, comme dans l'exemple fourni , une erreur peut survenir : TypeError : datetime.datetime n'est pas JSON sérialisable.

Solution :

Une approche pour résoudre ce problème consiste à spécifier une fonction par défaut personnalisée lors de la sérialisation du dictionnaire en JSON. Cette fonction gérera la conversion d'objets non sérialisables, tels que les objets datetime, dans un format compatible JSON.

import json

sample = {}
sample['title'] = "String"
sample['somedate'] = datetime.datetime(2012, 8, 8, 21, 46, 24, 862000)

def datetime_handler(x):
    if isinstance(x, datetime.datetime):
        return x.isoformat()
    raise TypeError("Unknown type")

json_string = json.dumps(sample, default=datetime_handler)

Dans cette solution, la fonction datetime_handler est définie pour convertir les objets datetime en une représentation sous forme de chaîne. en utilisant la méthode isoformat(). Cette représentation sous forme de chaîne peut ensuite être gérée de manière appropriée lors de la désérialisation.

En fournissant une fonction par défaut personnalisée comme celle-ci, vous pouvez convertir avec succès votre dictionnaire contenant des objets datetime dans un format sérialisable JSON.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn