【发布时间】:2014-02-03 15:55:49
【问题描述】:
我正在尝试创建自定义 DateTime 转换器,但没有成功。 问题:我有很多对象要序列化,其中一些包含 DateTime 的属性,其中包含 DateTime.MinValue。我想将其序列化为空。但是我发现的所有解决方案都要求在对象内部进行适当的装饰(我做不到) 我在下面找到的其他解决方案是创建转换器,据我所知,此转换器仅适用于明确返回的 DateTime 对象,而不适用于其他对象。 请帮忙。
public class DateTimeConverter : JsonConverter
{
private readonly Type[] types;
public DateTimeConverter(params Type[] types)
{
this.types = types;
}
public override bool CanConvert(Type objectType)
{
return types.Any(t => t == objectType);
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
JToken t = JToken.FromObject(value);
if (t.Type != JTokenType.Object)
{
if (value is DateTime && value.Equals(DateTime.MinValue))
{
t = JToken.FromObject(null);
t.WriteTo(writer);
}
else
{
t.WriteTo(writer);
}
}
else
{
if (value.Equals(DateTime.MinValue)) {
t = JToken.FromObject(null);
t.WriteTo(writer);
}
else {
t.WriteTo(writer);
}
}
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException("Unnecessary because CanRead is false. The type will skip the converter.");
}
【问题讨论】:
标签: c# serialization json.net