辞書ー>JSON における datetime

Python json dumps() と dump() は、対象の辞書、Dictionary に、datetime を含んでると
TypeError: Object of type 'datetime' is not JSON serializable
シリアライズできません。

dumps の default= 属性で変換用のハンドラを指定して置換えないとならないです。
以下のように書くので、実装の都度、出力書式を決めてハンドラを用意するしかないです。

# -*- coding: UTF-8 -*-
import json
from datetime import datetime, date

def custom_serializer(o):
    return o.strftime('%Y-%m-%d %H:%M:%S.%f') if isinstance(o, (datetime, date)) else o

if __name__ == '__main__':
    dict = dict()
    dict['now'] = datetime.now()
    dict['today'] = date.today()
    jsonstr = json.dumps(dict, default=custom_serializer, indent=2)
    print(jsonstr)

結果、、、

{
  "now": "2020-10-31 14:49:03.649503",
  "today": "2020-10-31 00:00:00.000000"
}

↑は、strftime を使いましたが、ISO8601書式の isoformat() を使えば、
datetime オブジェクトと date オブジェクト、それぞれ型に従って出してくれます。

def custom_serializer(o):
    return o.isoformat() if isinstance(o, (datetime, date)) else o

とした場合、、

{
  "now": "2020-10-31T14:53:49.881443",
  "today": "2020-10-31"
}