If you don’t care you can pass in default=str (I think) but if you do care you can define a function for what the string representation should look like and pass that in, but that’s a happy path case to be honest. I usually only run into this problem when something is logging unknown data (otherwise I prefer to model data like this so the IDE is happy) so I pass in the default=str just to get it functional.
Duck typing usually works but, datetime man, datetime is the warp from Warhammer 40K, it will drive you mad.
cat = dict(name=‘Garfield’, color=‘orange’) str(cat)Can I have that job?
I would have accepted this answer.
I was hoping for json.dumps, but that’ll work.
I think json.dumps would not work if there is a datetime in the dict, right?
Yeah there’s other edge cases too, like Decimal, but as long as you have those things imported when you send it through dumps it should work.
Just tried it in an ipython shell
import datetime import json json.dumps({"a": datetime.datetime(1970,1,1)})And I got the TypeError: datetime not JSON serializable though.
If you don’t care you can pass in default=str (I think) but if you do care you can define a function for what the string representation should look like and pass that in, but that’s a happy path case to be honest. I usually only run into this problem when something is logging unknown data (otherwise I prefer to model data like this so the IDE is happy) so I pass in the default=str just to get it functional.
Duck typing usually works but, datetime man, datetime is the warp from Warhammer 40K, it will drive you mad.