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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size jsonplus-0.5.1-py2.py3-none-any.whl (5.6 kB) | File type Wheel | Python version 3.5 | Upload date | Hashes View hashes |
Filename, size jsonplus-0.5.1.tar.gz (4.3 kB) | File type Source | Python version None | Upload date | Hashes View hashes |
Hashes for jsonplus-0.5.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0f65bba0ac24dd3a1d7b6af0fc11746e830d050dfbf73156b1efaea7d009ae05 |
|
MD5 | 23ea17555b160fdcd6bfb81baa2abb6c |
|
BLAKE2-256 | cf156876cf1e89900859774e6785de7a3a0364876f37328f4b3c1da8bbf6fcac |