_ (_) _ ___ ___ _ __ ___ | / __|/ _ \| '_ \/ __| | \__ | (_) | | | \__ \ | |___/\___/|_| |_|___/ _/ | JSON SERIALIZATION |__/ MADE EASY!
~ Any Python objects to/from JSON, easily! ~
|
Example of a model to be serialized: @dataclass
class Person:
name: str
birthday: datetime Example of the serialization: jsons.dump(Person('Guido van Rossum', birthday_guido)) Output after serialization: {'birthday': '1956-01-31T12:00:00Z', 'name': 'Guido van Rossum'} |
pip install jsons
import jsons
some_instance = jsons.load(some_dict, SomeClass) # Deserialization
some_dict = jsons.dump(some_instance) # Serialization
In some cases, you have instances that contain other instances that need
(de)serialization, for instance with lists or dicts. You can use the
typing
classes for this as is demonstrated below.
from typing import List, Tuple
import jsons
# For more complex deserialization with generic types, use the typing module
list_of_tuples = jsons.load(some_dict, List[Tuple[AClass, AnotherClass]])
(For more examples, see the FAQ)
- Breaking change: Values of primitive types are now cast if possible (e.g. in
jsons.load('42', int)
). - Bugfix: NamedTuples could falsely raise an error when a justified
None
was provided. - Feature: Support for
uuid.UUID
.
- Feature: Added the ability to dump recursive objects.
- Feature: Clearer messaging upon serialization errors.
- Bugfix: Fix for failing to deserialize UUIDs.
- Breaking change: The default serializers and deserializers now use keyword-only arguments.
- Feature: Added
strip_attr
argument for omitting specific attributes when serializing objects. - Feature: The private attributes from
ABC
are now excluded from a dump.
- Feature: Support for typing.NewType.
- Bugfix: Deserializing a
Dict[K, V]
failed in3.7
.
- Feature: Support for Deque.
- Feature: Support for Counter.
- Feature: Support for OrderedDict.
- Feature: Support for Defaultdict.
- Feature: Support for ChainMap.
Special thanks to the following contributors of code, discussions or suggestions: