Skip to main content

De-/serialize Python dataclasses to or from JSON payloads. Compatible with Python 3.7 and newer.

Project description

databind.json

The databind.json package implements the de-/serialization to or from JSON payloads using the databind.core framework.

Check out the Documentation for examples.

Built-in converters

The following tables shows which types can be deserialized from / serialize to Python types with the native converters provided by the databind.json module:

Converter name Types Description
AnyConverter typing.Any Accept any value (useful for arbitrary JSON).
CollectionConverter typing.Collection[T], excl. str, bytes, bytearray, memoryview and typing.Mapping[K, V] Converts between native Python collections and JSON arrays.
DatetimeConverter datetime.date, datetime.datetime, datetime.time Converts between strings and date/time formats, using ISO 8601 time format by default (can be changed with the databind.core.settings.DateFormat setting).
DecimalConverter decimal.Decimal Converts between strings (and ints/floats if strict mode is off, strict mode is on by default) and decimals. The precision can be controlled with the databind.core.settings.Precision setting.
EnumConverter enum.Enum, enum.IntEnum Convert between strings and Python enumerations. The serialized form of IntEnum is the integer value, whereas the serialized form of Enum is a string (name of the enumeration value).
MappingConverter typing.Mapping[K, V] Converts between Python dicts and JSON objects. (While in theory K can be any type, for JSON K always needs to be str).
OptionalConverter typing.Optional[T] Handles optional fields in a schema.
PlainDatatypeConverter bytes, str, int, float, bool Converts between plain datatypes. In non-strict mode (off by default), numeric types will also accept strings as input for the deserialization.
SchemaConverter dataclasses.dataclass, typing.TypedDict Converts between Python dataclasses or typed dictionary and JSON objects.
UnionConverter typing.Union[...] Handles union types. Unions in JSON can be expressed in a multitide of ways, e.g. using a discriminator key and flat, keyed or nested structure or "best match". Check out the examples section of the documentation for more information.
LiteralConverter typing.Literal[...] Accepts or rejects a value based on whether it matches one of the values in the literal type hint.

The following converters are provided for convenience:

Converter name Types Description
StringifyConverter n/a A helper that allows to easily create de/serializers from a "to string" and "from string" function.

The following additional types are natively supported by databind.json using StringifyConverter:

Types Description
uuid.UUID Convert between strings and UUIDs.
pathlib.Path Convert between strings and paths.
pathlib.PurePath Convert between strings and paths.
nr.date.duration Deserialize from ISO 8601 duration strings or the object form, serialize to ISO 8601 strings.

Copyright © 2020 – Niklas Rosenstein

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

databind.json-4.4.2.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

databind.json-4.4.2-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

Details for the file databind.json-4.4.2.tar.gz.

File metadata

  • Download URL: databind.json-4.4.2.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/37.3 requests/2.28.2 requests-toolbelt/0.10.1 urllib3/1.26.14 tqdm/4.64.1 importlib-metadata/6.0.0 keyring/23.13.1 rfc3986/2.0.0 colorama/0.4.6 CPython/3.10.13

File hashes

Hashes for databind.json-4.4.2.tar.gz
Algorithm Hash digest
SHA256 ef81a3b1f57262e07ac042a8f32427e907cbd740cc4362f805d865751a31a8d2
MD5 224f61f924a6fca59950ef4432df5ab8
BLAKE2b-256 d5ce1e82e8ba89a7c13d4c61ac88342c2619ef0b70de0b1cc4e91c43c7540e6a

See more details on using hashes here.

File details

Details for the file databind.json-4.4.2-py3-none-any.whl.

File metadata

  • Download URL: databind.json-4.4.2-py3-none-any.whl
  • Upload date:
  • Size: 19.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/37.3 requests/2.28.2 requests-toolbelt/0.10.1 urllib3/1.26.14 tqdm/4.64.1 importlib-metadata/6.0.0 keyring/23.13.1 rfc3986/2.0.0 colorama/0.4.6 CPython/3.10.13

File hashes

Hashes for databind.json-4.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9075fa575ba17bf4536c7707fd9f9f02a205f988e47eae7ccc8f94419787f36d
MD5 53c22bd1cd49052a02035d76fc668e08
BLAKE2b-256 842eb5ae9fb1ed85d489cdf76827049a797c89dbb65b340ca96a141166e462d0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page