Skip to main content

Typed JSON dataclasses

Project description

JSON Dataclasses

GitHub PyPI GitHub Workflow Status GitHub Workflow Status

Typed JSON dataclasses for Python 3.9+

Check out the docs

Installation

pip install jsondataclasses

Usage

from datetime import date
from typing import Literal, Optional

from jsondataclasses import jsondataclass, jsonfield


def parse_date(date_string: str) -> date:
    return date.fromisoformat(date_string.replace(".", "-"))


@jsondataclass
class Car:
    make: Literal["Ford", "Renault", "Volkswagen"] = jsonfield("carMake")
    model: str = jsonfield("model")
    manufactured_at: date = jsonfield("dateOfManufacture", parse_date)
    num_of_wheels: Optional[int] = jsonfield("numberOfWheels", default_value=4)


car = Car({
    "carMake": "Ford",
    "model": "Focus",
    "dateOfManufacture": "2018.03.14"
})
print(car)  # Car(make='Ford', model='Focus', manufactured_at=datetime.date(2018, 3, 14), num_of_wheels=4)

Class field types can be any primitive type (eg. str, int, datetime), a variadic generic (eg. list[str], Optional[int], Literal["hello", "world"]), or even another jsondataclass. The default_value argument of jsonfield will be used if the specified key is not found in the dictionary and the type of the class field is not Optional[...]. In this case, the value of default_value will be passed to the supplied parser function.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jsondataclasses-0.0.6.tar.gz (4.0 kB view details)

Uploaded Source

Built Distribution

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

jsondataclasses-0.0.6-py3-none-any.whl (4.0 kB view details)

Uploaded Python 3

File details

Details for the file jsondataclasses-0.0.6.tar.gz.

File metadata

  • Download URL: jsondataclasses-0.0.6.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.1

File hashes

Hashes for jsondataclasses-0.0.6.tar.gz
Algorithm Hash digest
SHA256 b7a2c38aa02fb9a44d248c281e9d0db2d9589c46584239f9699dcc5f542c0b73
MD5 d3fd194cab09896b2eb404f0de46c795
BLAKE2b-256 6609aff029363fd03f66e3efa1778f64caf0459c371d907f08633a5d84a54153

See more details on using hashes here.

File details

Details for the file jsondataclasses-0.0.6-py3-none-any.whl.

File metadata

File hashes

Hashes for jsondataclasses-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 fe13fc53fc50997f1cd599bc2466f46c8fd433b26e4fec08f85e7f6a958d718c
MD5 1411dd68eaedc76d54b8b21f0c3bff1e
BLAKE2b-256 ea761d52efd934c2b2f499fad2168264df79ac31ca13d890ca44f8b8380b46a6

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