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

本文关键字:日期 字符串 IsoFormat net 反序列化 json | 更新日期: 2023-09-27 18:32:05

我有一个失败的测试用例。有人知道如何解决它吗?

    [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);
    }

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

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

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

问题是字符串周围缺少嵌入的引号(请记住,它期待 JSON)。按如下方式更改dateString将解决您的问题:

string dateString = "'"2014-06-02T21:00:00.0000000Z'"";