Json.NET custom serialization with JsonConverter - how to get the "default" behavior
<p>I have a JsonConverter for my class DataType. 
I would like to do some special handling when plain string used in Json as the value of a property of type DataType. In the case where the value is a "full" object, I would like to do the "normal" deserialization. </p>

<p>Here is my attempt </p>

<pre><code>public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
    if (reader.Value != null &amp;&amp; reader.ValueType == typeof (string))
    {
        return someSpecialDataTypeInstance;
    }
    else if (reader.TokenType == JsonToken.StartObject)
    {
        DataType dataType = serializer.Deserialize&lt;DataType&gt;(reader);
        return dataType;
    }
    else
    {
        throw new JsonSerializationException();
    }
}
</code></pre>

<p>But this doesn't work, because this line: 
DataType dataType = serializer.Deserialize(reader);
causes infinite recursion. </p>

<p>Could this be done somehow easily? (without the need to manually go property-by-property)</p>