Skip to content

Nullable DateTime does not deserialize correctly #98

@LeapingGorilla

Description

@LeapingGorilla

Attempting to deserialise a string containing a date into an object where the field is a Nullable<DateTime> results in a FormatException with the error:

String was not recognized as a valid DateTime.
at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
at System.DateTime.Parse(String s, IFormatProvider provider, DateTimeStyles styles)>
at NetJSON.NetJSON.FastStringToDate(String value)
at FailingClassClass.ExtractNullableDateTime(Char* , Int32& )
at FailingClassClass.CreateClassOrDictFailingClass(Char* , Int32& )
at FailingClassClass.ReadFailingClass(String )
at FailingClassClass.Deserialize(String )
at NetJSON.NetJSON.Deserialize[T](String json)

A minimal repro is:

void Main()
{
    var failing = new FailingClass { ThisGoesBang = new DateTime(2015, 12, 25, 16, 30, 00) };
    var failStr = NetJSON.NetJSON.Serialize(failing);
    Console.WriteLine(failStr);
    var failResult = NetJSON.NetJSON.Deserialize<FailingClass>(failStr); // Never get past here, we explode with a FormatException  
    Console.WriteLine("FailingClass Field is Correct? - {0}", failing.ThisGoesBang == failResult.ThisGoesBang);
}

public class FailingClass
{
    public DateTime? ThisGoesBang { get; set; }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions