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
Examples
Let’s start with datetime.
>>> from jsonplus import json_loads, json_dumps, json_prettydump
>>> 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)}
Continue with other datetime.* types, like timedelta, date, and time.
>>> from datetime import timedelta, date, time
>>> print json_prettydump({"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)]
Alternatively, just treat it 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)
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.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0f65bba0ac24dd3a1d7b6af0fc11746e830d050dfbf73156b1efaea7d009ae05 |
|
MD5 | 23ea17555b160fdcd6bfb81baa2abb6c |
|
BLAKE2b-256 | cf156876cf1e89900859774e6785de7a3a0364876f37328f4b3c1da8bbf6fcac |