json.net在IsoFormat中反序列化日期字符串

Ray*_*ond 4 c# serialization datetime json.net

我有这个失败的测试用例.谁知道怎么修它?

    [TestMethod]
    public void Should_deserialize_utc_datestring_to_utc_date_with_AlwaysUseUtc_true()
    {
        string dateString = "2014-06-02T21:00:00.0000000Z";
        DateTime dateRaw = new DateTime(2014, 6, 2, 21, 0, 0, 0, DateTimeKind.Utc);

        JsonSerializerSettings settings = new JsonSerializerSettings();
        settings.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
        settings.DateFormatHandling = DateFormatHandling.IsoDateFormat;
        DateTime dateSerialized = JsonConvert.DeserializeObject<DateTime>(dateString, settings);
        dateSerialized.Should().Be(dateRaw);
    }
Run Code Online (Sandbox Code Playgroud)

我得到的错误(使用ReSharper作为我的TestRunner)是:

测试方法When_json_serializing_dates.Should_deserialize_utc_datestring_to_utc_date_with_AlwaysUseUtc_true引发异常:Newtonsoft.Json.JsonReaderException:解析数字时遇到意外字符:T.路径'',第1行,第10位.

com*_*ech 6

问题是你缺少字符串周围的嵌入式引号(记住,它期待JSON).更改您的dateString以下内容将解决您的问题:

string dateString = "\"2014-06-02T21:00:00.0000000Z\"";
Run Code Online (Sandbox Code Playgroud)