Last updated:
0 purchases
jsonabler 0.2.2
jsonabler
Python package for making your classes easy encodable to JSON string and vice-versa.
Getting started
Requirements
Python >= 3.8
Installation
pip install jsonabler
Usage
Making a Jsonable
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'])
Registering a Jsonable
For decoding your Jsonable classes, you need to register it.
Decorating your classes with the @jsonabled decorator
from jsonabler import Jsonable, jsonabled
@jsonabled
class Foo(Jsonable):
...
Calling register_jsonables method passing class types
from jsonabler import Jsonable, register_jsonables
class Foo(Jsonable):
...
if __name__ == '__main__':
register_jsonables({Foo})
Encoding a Jsonable
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
...
Encoded Foo
[
'Foo',
{
'bar': "abc",
}
]
Decoding a Jsonable
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:
...
License
Distributed under the MIT License. See LICENSE file for more information.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.