Maison >développement back-end >Tutoriel Python >Comment résoudre les erreurs de sérialisation JSON avec les objets datetime de Python ?

Comment résoudre les erreurs de sérialisation JSON avec les objets datetime de Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-04 22:06:151018parcourir

How Do I Solve JSON Serialization Errors with Python's datetime Objects?

Surmonter les problèmes de sérialisation JSON avec datetime.datetime

Au cours de l'utilisation de dictionnaires Python contenant des objets datetime, tels que sample['somedate '], vous pouvez rencontrer l'erreur suivante lorsque vous tentez de sérialiser le dictionnaire en JSON :

TypeError: datetime.datetime(2012, 8, 8, 21, 46, 24, 862000) is not JSON serializable

La solution principale pour ce problème réside dans la fourniture d'une fonction de sérialisation personnalisée pour gérer les objets datetime. Une approche populaire consiste à utiliser le paramètre par défaut de la fonction json.dumps(), qui accepte une fonction qui prend un objet en entrée et renvoie une représentation sérialisable.

Dans ce scénario, une implémentation simple pourrait être comme suit :

def default(obj):
    if isinstance(obj, datetime.datetime):
        return str(obj)
    # Other logic to handle other types (if needed)

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

Cette fonction convertit l'objet datetime en une représentation sous forme de chaîne avant la sérialisation. Alternativement, vous pouvez utiliser la méthode ctime() intégrée de Python :

sample['somedate'] = sample['somedate'].ctime()
json_string = json.dumps(sample)

Cette approche convertit l'objet datetime en une chaîne lisible par l'homme qui peut être sérialisée dans le cadre de votre dictionnaire.

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