"""JSON serialization interface."""
from typing import Any, TypeVar, Type, Dict, Optional
from dataclasses import dataclass
T = TypeVar("T")
[docs]
class JsonSerializationError(Exception):
"""Base exception for JSON serialization errors."""
pass
[docs]
class JsonDeserializationError(Exception):
"""Base exception for JSON deserialization errors."""
pass
[docs]
class JsonFieldError(JsonSerializationError):
"""Field-specific JSON conversion error."""
[docs]
def __init__(self, field_name: str, field_type: Type, message: str):
self.field_name = field_name
self.field_type = field_type
super().__init__(f"Field '{field_name}' ({field_type.__name__}): {message}")
[docs]
class JsonSerde:
"""Base mixin for JSON serialization."""
[docs]
def to_json(self) -> Any:
"""Convert to JSON-compatible value."""
from .codec import JsonCodec
return JsonCodec.to_json(self)
[docs]
@classmethod
def from_json(cls: Type[T], data: Any) -> T:
"""Create from JSON-compatible value."""
from .codec import JsonCodec
return JsonCodec.from_json(data, cls)