A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/mathspp/extendedjson below:

mathspp/extendedjson: Easily extend JSON to encode and decode arbitrary Python objects.

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:

  1. 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.
  2. Subclass ExtendedEncoder and implement the method encode_complex that accepts a complex number and returns a dictionary with the format you defined.
  3. Subclass 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