Make any type JSON-serializable
Project description
Make any type JSON-serializable.
A Python module which makes json.dumps work with several builtin and stdlib types. A hook for registering any custom type is also provided.
Installing
Simply install alljson with pip or add it to your project dependencies:
pip install alljson
Supported types
After installing, the following types are JSON-serializable:
- generators
- set and frozenset
- dict item/key/value iterators and views
- datetime.date and datetime.datetime (as strings in ISO format)
- uuid.UUID
- decimal.Decimal (serialized as string in order to preserve precision)
- reversed results
In addition to these, the following Python 3 types are supported:
- map, filter, range iterators
- enum.Enum
- pathlib.Path
- types.MappingProxyType
- classes implementing Sequence and Mapping abc interfaces
Registering custom types
In order to register a new type, use alljson.register_encoder(type, encoder_function). encoder_function should take object of given type as the only parameter and return a simple JSON-serializable Python value (such as dict or str).
For example:
import arrow import alljson alljson.register_encoder(arrow.Arrow, arrow.Arrow.isoformat)
Acknowledgements
- pth trick was stolen from delightful future-fstrings project
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for alljson-0.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 11ae81e7d8a61ba574b4e335553f88126df52c405244f000df8e4ebfcc148c18 |
|
MD5 | fb6b792f1430da85574d6161b82ad6f4 |
|
BLAKE2-256 | 60b5b49809b7e0e357d28f47393427808ff364b42e119d0d53510943b5b19850 |