I avoid late bound object, interface and polymorphic type properties for issues like this. You would need to construct a JSON payload for the specific serializer that your App is configured with, e.g. ServiceStack.Text which requires storing the full C# Type Name to deserialize into its serializer-specific __type
property, which should be the first property defined for the type.
But I personally avoid it as customizing JSON for a specific JSON Serializer limits its interoperability with other languages and even .NET Serializers, I’ve talked about different ways on avoiding polymorphism previously on this forum.