json

JSON-based bus message serializer with pluggable type adapters.

class pipecat.bus.serializers.json.JSONMessageSerializer[source]

Bases: MessageSerializer

Serialize bus messages as JSON with pluggable type adapters.

Handles JSON-native types, enums, bytes, dataclasses, and any type with a registered TypeAdapter (e.g. LLMContext, ToolsSchema). Adapters for common Pipecat types are registered by default. Additional type adapters can be registered via register_adapter().

Example:

serializer = JSONMessageSerializer()

data = serializer.serialize(message)
restored = serializer.deserialize(data)
__init__()[source]

Create a serializer with default adapters for LLMContext and ToolsSchema.

register_adapter(type_: type, adapter: TypeAdapter) None[source]

Register a type adapter.

Parameters:
  • type – The type to handle.

  • adapter – The adapter that serializes/deserializes instances of this type.

serialize(message: BusMessage) bytes[source]

Convert a bus message to JSON bytes.

Parameters:

message – The bus message to serialize.

Returns:

UTF-8 encoded JSON bytes.

deserialize(data: bytes) BusMessage | None[source]

Reconstruct a bus message from JSON bytes.

Parameters:

data – The JSON bytes produced by serialize().

Returns:

The reconstructed BusMessage, or None if deserialization fails.