Easily extend JSON to encode and decode arbitrary Python objects.
Project description
extendedjson
Easily extend JSON to encode and decode arbitrary Python objects.
Getting started
You can get extendedjson from PyPI,
which means it's easily installable with pip:
python -m pip install extendedjson
Example usage
Suppose you want to extend the JSON format to handle complex numbers,
which corresponds to the type complex in Python.
To do that, you need to:
- Determine how a complex number could look like as a JSON dictionary.
For example, a dictionary with keys
"real"and"imag"is enough to determine what complex number we are talking about. - Subclass
ExtendedEncoderand implement the methodencode_complexthat accepts a complex number and returns a dictionary with the format you defined. - Subclass
ExtendedDecoderand implement a methoddecode_complexthat accepts a dictionary with the format you described and returns an instance of acomplexnumber.
Here is the code:
import extendedjson as xjson
class MyEncoder(xjson.ExtendedEncoder):
def encode_complex(self, c):
return {"real": c.real, "imag": c.imag}
class MyDecoder(xjson.ExtendedDecoder):
def decode_complex(self, dict_):
return complex(dict_["real"], dict_["imag"])
Then, you can use your classes with the standard module json,
by specifying the cls keyword argument in the functions json.load, json.loads, json.dump, and json.dumps:
import json
c = complex(1, 2)
c_json = json.dumps(c, cls=MyEncoder)
c_ = json.loads(c_json, cls=MyDecoder)
print(c_) # (1+2j)
print(c_ == c) # True
Refer to this article to learn more about the internal details of extendedjson.
Changelog
Refer to the CHANGELOG.md file.
Project details
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file extendedjson-0.1.3.tar.gz.
File metadata
- Download URL: extendedjson-0.1.3.tar.gz
- Upload date:
- Size: 3.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.14 CPython/3.10.5 Linux/5.15.0-1014-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0245385e98bde32a7f23baa8c12c18aa8d614d2e774d8c2429a6c0c00bf30ea2
|
|
| MD5 |
40c4abf6fab64366cbba7a9eed688a0a
|
|
| BLAKE2b-256 |
2da0a680f3c05c9204a902f532932e052577f2a67827eafc7e5dc7296d5a1139
|
File details
Details for the file extendedjson-0.1.3-py3-none-any.whl.
File metadata
- Download URL: extendedjson-0.1.3-py3-none-any.whl
- Upload date:
- Size: 3.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.14 CPython/3.10.5 Linux/5.15.0-1014-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e16a9528f826c19fa0ad1d0188ba3c9c31d52fd683d3a39a1d06b4b53d25c3e
|
|
| MD5 |
b98846ed90ca45c52c68b2ca8ff6f3a4
|
|
| BLAKE2b-256 |
a9efc2cb4fa9f850b18c10736236bf604becbfd8130a76f8bfc4a82ae988a17f
|