Python package for making your classes easy encodable to JSON string and vice-versa.
- Python >= 3.8
pip install jsonabler
Make your class extends the Jsonable
interface and implements get_jsonable_data
and from_jsonable_data
methods with the encoding/decoding logic.
from jsonabler import Jsonable, jsonabled
@jsonabled
class Foo(Jsonable):
def __init__(self, bar: str):
self.__bar = bar
def get_jsonable_data(self) -> dict:
return {
'bar': self.__bar,
}
@classmethod
def from_jsonable_data(cls, data: dict) -> Jsonable:
return cls(data['bar'])
For decoding your Jsonable classes, you need to register it.
from jsonabler import Jsonable, jsonabled
@jsonabled
class Foo(Jsonable):
...
from jsonabler import Jsonable, register_jsonables
class Foo(Jsonable):
...
if __name__ == '__main__':
register_jsonables({Foo})
Call dumps
method passing a Jsonable
object.
from jsonabler import dumps
def upload_foo(foo: Foo) -> None:
json_string = dumps(foo)
# transmit your JSON string
...
[
'Foo',
{
'bar': "abc",
}
]
Call loads
method passing the JSON string.
from jsonabler import loads, JsonableDecodeError, JsonableNotRegisteredError
from json import JSONDecodeError
def download_foo() -> Foo:
# receive JSON string encoded Foo object
...
try:
return loads(json_string)
# not a valid encoded JSON string
except JSONDecodeError:
...
# the Jsonable type of the encoded object was not registered
except JsonableNotRegisteredError:
...
# something went wrong while decoding the object
except JsonableDecodeError:
...
./test
./lint
Distributed under the MIT License. See LICENSE
file for more information.