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.