(必要な場合)DateTime.MinValue
にnull
をデシリアライズnull
にDateTime.MinValue
をシリアライズするカスタムコンバータを作成し、:
public class MinDateTimeConverter : DateTimeConverterBase
{
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.Value == null)
return DateTime.MinValue;
return (DateTime)reader.Value;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
DateTime dateTimeValue = (DateTime)value;
if (dateTimeValue == DateTime.MinValue)
{
writer.WriteNull();
return;
}
writer.WriteValue(value);
}
}
この例に示すように、あなたは、その後、あなたのデータクラスにコンバータを追加するために属性を使用することができます:
public class Example
{
[JsonConverter(typeof(MinDateTimeConverter))]
public DateTime ValueOne { get; set; }
[JsonConverter(typeof(MinDateTimeConverter))]
public DateTime ValueTwo { get; set; }
}
public static void Main(string[] args)
{
Example data = new Example();
data.ValueOne = DateTime.MinValue;
data.ValueTwo = DateTime.Now;
JsonSerializer serializer = new JsonSerializer();
using (StringWriter writer = new StringWriter())
{
serializer.Serialize(writer, data);
Console.Write(writer.ToString());
}
Console.ReadKey();
}
コンソール出力:
{"ValueOne":null,"ValueTwo":"2016-10-26T09:54:48.497463+01:00"}
あなたはプロパティ自体に設定することができます。そのDateTime.MinValueの場合。あなたのDateTimeはnull可能であるはずです。 –
おそらく間違いですが、NOT NULL DateTime列のエンティティコードを 'DateTime'として生成するコード生成システムがあります。列がNullableの場合、.NETタイプは 'DateTime?'です。私は多くのコードを壊すことなくこれを変更できるとは思わない – Mick
null可能にすることなく、null値をDateTimeに割り当てることはできません –