Service that manages (de-)serialization of objects.
Serializers registered with the service. We store the DI keys and realize them as needed, rather than at register time since most registration is done via the @ObjectSerializer decorator and the ContainerBlueprint. Realizing them at that time can cause loops in the DI call to realizeContainer since getContainer() -> realizeContainer() -> make the serializer -> getContainer(). This largely defers the realization until after all the DI keys are registered with the global Container.
Decode a value from JSON using a registered serializer, if one exists.
Encode a value to JSON using a registered serializer, if one exists.