Easily extend JSON to encode and decode arbitrary Python objects.
You can get extendedjson
from PyPI, which means it's easily installable with pip
:
python -m pip install extendedjson
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:
"real"
and "imag"
is enough to determine what complex number we are talking about.ExtendedEncoder
and implement the method encode_complex
that accepts a complex number and returns a dictionary with the format you defined.ExtendedDecoder
and implement a method decode_complex
that accepts a dictionary with the format you described and returns an instance of a complex
number.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
.
Refer to the CHANGELOG.md file.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4