datetime 型、date型を含むオブジェクトを JSONシリアライズしようとして、
AttributeError: 'datetime.datetime' object has no attribute '__dict__'
が発生するのを回避する場合、
json.dumps メソッドの default メソッドで以下のシリアライズメソッドを用意すること。
def toJson(obj): if isinstance(obj, datetime): return obj.strftime('%Y-%m-%d %H:%M:%S') elif isinstance(obj, date): return obj.strftime('%Y-%m-%d') else: return obj.__dict__ # datetime を含む userオブジェクトをシリアライズする。 str = json.dumps(user, default=toJson, indent=3)
長くて可読性が悪いけど、上のようにメソッドを用意しないなら、、
s = json.dumps(user, default=lambda o: o.strftime('%Y-%m-%d %H:%M:%S') if isinstance(o, datetime) else o.strftime('%Y-%m-%d') if isinstance(o, date) else o.__dict__, indent=2)