如何在使用Json.Net从流反序列化时设置自定义日期格式

本文关键字:反序列化 设置 自定义 格式 日期 Net Json | 更新日期: 2023-09-27 18:25:52

我想从JSON流中解析DateTime

日期的模式为YYYY/MM/DD

如何在序列化程序的设置上或使用DateParseHandling设置此自定义格式?

如何在使用Json.Net从流反序列化时设置自定义日期格式

只需将JsonSerializer上的DateFormatString设置为所需的格式。Json.Net使用与.Net框架相同的格式说明符。

这里有一个例子:

class Program
{
    static void Main(string[] args)
    {
        string json = @"{ ""date"" : ""2014/10/07"" }";
        using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
        using (StreamReader sr = new StreamReader(ms))
        using (JsonTextReader jtr = new JsonTextReader(sr))
        {
            JsonSerializer ser = new JsonSerializer();
            ser.DateFormatString = "yyyy/MM/dd";
            Foo foo = ser.Deserialize<Foo>(jtr);
            Console.WriteLine(foo.Date.ToLongDateString());
        }
    }
}
class Foo
{
    public DateTime Date { get; set; }
}

示例输出:

Tuesday, October 07, 2014