Custom datatypes (like datetime) serialization to/from JSON.
Project description
Serialization of Python types to JSON done right.
No more errors like:
TypeError: datetime.datetime(...) is not JSON serializable
In addition to (de-)serialization of basic types (provided by simplejson), jsonplus provides support for exact (de-)serialization of other commonly used types, like: tuple/namedtuple, set/frozenset, complex/decimal.Decimal/fractions.Fraction, and datetime/date/time/timedelta.
Installation
jsonplus is available as Python package. To install, simply type:
$ pip install jsonplus
Usage
You can treat jsonplus as a friendly drop-in replacement for json/simplejson.
>>> import jsonplus as json
>>>
>>> x = json.loads('{"a":1,"b":2}')
>>> y = json.dumps(x, indent=4)
>>> z = json.pretty(x)
Examples
Let’s start with that beloved datetime.
>>> import jsonplus as json
>>> from datetime import datetime
>>> json.dumps({
... "x": [4,3],
... "t": datetime.now()
... })
'{"x":[4,3],"t":{"__class__":"datetime","__value__":"2013-09-06T23:38:55.819791"}}'
>>> json.loads(_)
{u'x': [4, 3], u't': datetime.datetime(2013, 9, 6, 23, 38, 55, 819791)}
Similarly for other datetime.* types, like timedelta, date, and time:
>>> from datetime import timedelta, date, time
>>> print json.pretty({"dt": timedelta(0, 1234567, 123), "d": date.today(), "t": datetime.now().time()})
{
"d": {
"__class__": "date",
"__value__": "2013-09-22"
},
"dt": {
"__class__": "timedelta",
"__value__": {
"days": 14,
"microseconds": 123,
"seconds": 24967
}
},
"t": {
"__class__": "time",
"__value__": "23:33:16.335360"
}
}
Also, set and complex:
>>> json.dumps([set(range(3)), 1+2j])
'[{"__class__":"set","__value__":[0,1,2]},{"__class__":"complex","__value__":{"real":1.0,"imag":2.0}}]'
>>> json.loads(_)
[set([0, 1, 2]), (1+2j)]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for jsonplus-0.5.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 10c6022b4ce5b6e51449af678fea8ea167102c37922fc845a09b991f048c7780 |
|
MD5 | 1838b7edac8f4921a759e24b73723d53 |
|
BLAKE2b-256 | 3915eca44970dc6b241d175450673de6e6039392b289a82eb0b2df506cec8d9d |