Sick of rewriting the same JSON datetime handling code for each project? jsondate
is a drop-in replacement for Python's standard json
library that adds sensible handling of datetime
and date
objects.
jsondate
uses ISO8601 for encoding datetime
objects and the date-specific part of ISO6801 for encoding date
objects.
Example:
import datetime
import jsondate as json
>>> data = json.dumps(dict(created_at=datetime.datetime(2012, 10, 31)))
'{"created_at": "2012-10-31T00:00:00Z"}'
>>> json.loads(data)
{u'created_at': datetime.datetime(2012, 10, 31, 0, 0)}
>>> date = json.dumps(dict(date=datetime.date(2012, 10, 31)))
'{"date": "2012-10-31"}'
>>> json.loads(data)
{u'created_at': datetime.date(2012, 10, 31)}
The json
standard library module will return unicode
objects for all strings except empty strings, which are returned as str
objects.
This inconsistency can be annoying when using libraries that expect all input to be unicode
.
jsondate
fixes this by returning empty-strings as unicode
objects as well.