Python 3における「datetime.datetimeがJSONシリアライズ可能ではありません」というエラーをどのように克服すればよいですか?

PYTHON3 チュートリアル

PythonにおけるdatetimeオブジェクトのJSONシリアライズ

PythonのdatetimeオブジェクトはデフォルトではJSONに直接シリアライズできません。以下に、datetimeオブジェクトをJSONシリアライズ可能な文字列形式に変換する方法を示します。

1. ISO 8601形式への変換

ISO 8601は国際標準であり、日付と時間の表現に広く使用されています。datetimeオブジェクトをこの形式の文字列に変換することで、JSONシリアライズの問題を解決できます。

import datetime

# datetimeオブジェクトの作成
dt = datetime.datetime.now()

# ISO 8601形式の文字列に変換
iso_format_string = dt.isoformat()

print(iso_format_string)

上記のコードは、現在の日時をISO 8601形式の文字列に変換して出力します。出力例は以下のようになります。

2023-01-01T12:00:00.000000

2. カスタム形式での日付文字列化

ISO 8601以外にも、カスタム形式で日付を文字列に変換することができます。以下の例では、より読みやすい形式で日付と時間をフォーマットします。

import datetime

# datetimeオブジェクトの作成
dt = datetime.datetime.now()

# カスタム形式の文字列に変換
formatted_string = dt.strftime('%Y-%m-%d %H:%M:%S')

print(formatted_string)

このコードは、指定されたフォーマットで現在の日時を出力します。出力例は以下の通りです。

2023-01-01 12:00:00

3. RFC 2822形式での日付文字列化

RFC 2822は、電子メールで使用される日付と時間の形式です。この形式もJSONシリアライズに適しています。

import datetime

# datetimeオブジェクトの作成
dt = datetime.datetime.now()

# RFC 2822形式の文字列に変換
rfc2822_string = dt.strftime('%a, %d %b %Y %H:%M:%S +0000')

print(rfc2822_string)

上記のコードは、RFC 2822形式で現在の日時を文字列化して出力します。出力例は以下のようになります。

Sun, 01 Jan 2023 12:00:00 +0000

これらの方法を使用して、PythonのdatetimeオブジェクトをJSONで扱いやすい形式に変換できます。それにより、データの交換やAPIの開発が容易になります。

購読
通知
0 Comments
Inline Feedbacks
View all comments