Skip to main content

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

Reason this release was yanked:

Some weird issue with this release..

Project description

databind.json

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

Quickstart

import databind.json
import dataclasses

@dataclasses.dataclass
class ServerConfig:
  host: str
  port: int = 8080

@dataclasses.dataclass
class MainConfig:
  server: ServerConfig

payload = { 'server': { 'host': '127.0.0.1' } }
config = databind.json.load(payload, MainConfig)
assert config == MainConfig(ServerConfig('127.0.0.1'))

Examples for common use cases

Unions with literal matches

import dataclasses
import databind.json
from typing import Literal

@dataclasses.dataclass
class AwsMachine:
  region: str
  name: str
  instance_id: str
  provider: Literal["aws"] = "aws"

@dataclasses.dataclass
class AzureMachine:
  resource_group: str
  name: str
  provider: Literal["azure"] = "azure"

Machine = AwsMachine | AzureMachine

payload = {"provider": "azure", "resource_group": "foo", "name": "bar"}
assert databind.json.load(payload) == AzureMachine("foo", "bar")

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-2.0.8.tar.gz (11.1 kB view hashes)

Uploaded Source

Built Distributions

databind_json-2.0.8-py3-none-any.whl (11.0 kB view hashes)

Uploaded Python 3

databind.json-2.0.8-py3-none-any.whl (11.0 kB view hashes)

Uploaded Python 3

Supported by

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