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の開発が容易になります。