Coverage for event_normalizer/serializers/json.py: 100%
13 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-21 20:04 +0000
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-21 20:04 +0000
1"""JSON serializer."""
3import json
4from typing import Any, Literal
6from ..models import NormalizedEvent
7from .flat_dict import to_flat_dict
10class JSONSerializer:
11 """Serialize NormalizedEvent as structured or flat JSON."""
13 @staticmethod
14 def to_dict(
15 event: NormalizedEvent,
16 mode: Literal["structured", "flat"] = "structured",
17 exclude_none: bool = True,
18 ) -> dict[str, Any]:
19 if mode == "flat":
20 return to_flat_dict(
21 event,
22 exclude_none=exclude_none,
23 )
25 return event.model_dump(
26 exclude_none=exclude_none,
27 mode="json",
28 )
30 @staticmethod
31 def serialize(
32 event: NormalizedEvent,
33 mode: Literal["structured", "flat"] = "structured",
34 exclude_none: bool = True,
35 ) -> str:
36 return json.dumps(
37 JSONSerializer.to_dict(
38 event,
39 mode=mode,
40 exclude_none=exclude_none,
41 )
42 )