apischema: JSON (de)serialization, GraphQL, and JSON Schema

0.19.0 · active · verified Fri Apr 17

apischema is a Python library for JSON (de)serialization, GraphQL, and JSON schema generation, heavily leveraging Python's type hints. It is currently at version 0.19.0 and maintains an active release cadence with frequent updates and bug fixes.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates basic serialization and deserialization of a Python dataclass using `apischema`, including an example of how to handle `ValidationError`.

from dataclasses import dataclass
from apischema import serialize, deserialize
from apischema.validation.errors import ValidationError

@dataclass
class User:
    id: int
    name: str
    email: str | None = None

# Serialization
user_obj = User(id=1, name="Alice", email="alice@example.com")
serialized_data = serialize(user_obj)
print(f"Serialized: {serialized_data}")
# Expected output: {'id': 1, 'name': 'Alice', 'email': 'alice@example.com'}

# Deserialization
deserialized_obj = deserialize(User, {'id': 2, 'name': 'Bob'})
print(f"Deserialized: {deserialized_obj}")
# Expected output: User(id=2, name='Bob', email=None)

# Handling validation errors
try:
    deserialize(User, {'id': 'not-an-int', 'name': 'Charlie'})
except ValidationError as e:
    print(f"Validation Error: {e}")
# Expected output: Validation Error: [id]: must be an integer

view raw JSON →