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.
Here is my attempt
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.Value != null && reader.ValueType == typeof (string)) { return someSpecialDataTypeInstance; } else if (reader.TokenType == JsonToken.StartObject) { DataType dataType = serializer.Deserialize<DataType>(reader); return dataType; } else { throw new JsonSerializationException(); } } But this doesn't work, because this line: DataType dataType = serializer.Deserialize(reader); causes infinite recursion.
Could this be done somehow easily? (without the need to manually go property-by-property)