【发布时间】:2016-06-05 20:20:42
【问题描述】:
我的类 DataType 有一个 JsonConverter。 当在 Json 中使用纯字符串作为 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); 导致无限递归。
这能以某种方式轻松完成吗? (无需手动逐个属性)
【问题讨论】:
-
在尝试反序列化时跳过了一些步骤。看看这里stackoverflow.com/questions/8030538/…
标签: c# json serialization json.net