首页 > 解决方案 > JSON.NET 未将 ISO 8601 时间转换为 Noda Time Instant

问题描述

下面代码的输出是1970-01-01T00:00:00Z而不是2021-09-20T19:43:15Z. 我究竟做错了什么?我正在使用 3.0.5NodaTime版和 3.0.0 版NodaTime.Serialization.JsonNet

class Program
    {
        class Foo
        {
            [JsonProperty("time")]
            public Instant Time { get; }
        }

        static void Main(string[] args)
        {
            const string json = "{\"time\": \"2021-09-20T19:43:15.204Z\"}";
            var foo = JsonConvert.DeserializeObject<Foo>(json,
                new JsonSerializerSettings().ConfigureForNodaTime(DateTimeZoneProviders.Tzdb));
            Console.WriteLine(foo.Time);
        }
    }

谢谢你的帮助,

杰克

标签: c#datetimejson.netnodatime

解决方案


您的Time财产只有一个“getter”——没有 setter。只需将属性更改为也有一个 setter:

[JsonProperty("time")]
public Instant Time { get; set; }

推荐阅读