Typed JSON dataclasses
Project description
JSON Dataclasses
Typed JSON dataclasses for Python 3.9+
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
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7a2c38aa02fb9a44d248c281e9d0db2d9589c46584239f9699dcc5f542c0b73
|
|
| MD5 |
d3fd194cab09896b2eb404f0de46c795
|
|
| BLAKE2b-256 |
6609aff029363fd03f66e3efa1778f64caf0459c371d907f08633a5d84a54153
|
File details
Details for the file jsondataclasses-0.0.6-py3-none-any.whl.
File metadata
- Download URL: jsondataclasses-0.0.6-py3-none-any.whl
- Upload date:
- Size: 4.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe13fc53fc50997f1cd599bc2466f46c8fd433b26e4fec08f85e7f6a958d718c
|
|
| MD5 |
1411dd68eaedc76d54b8b21f0c3bff1e
|
|
| BLAKE2b-256 |
ea761d52efd934c2b2f499fad2168264df79ac31ca13d890ca44f8b8380b46a6
|