我有一个用于我的类DataType的JsonConverter。 当纯字符串被用作DataType类型属性的值时,我想进行一些特殊处理。在值是一个“完整”的对象的情况下,我想进行“正常”的反序列化。
这是我的尝试:
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();
}
}
但这不起作用,因为这行代码:
DataType dataType = serializer.Deserialize(reader);
会导致无限递归。
这能否轻松地完成?(不需要手动逐个属性进行)