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

时间:2014-10-06 17:34:03

标签: c# .net json.net

我想从JSON流中解析DateTime

日期的模式为YYYY/MM/DD

如何在Serializer的设置或使用DateParseHandling设置此自定义格式?

1 个答案:

答案 0 :(得分:1)

只需将DateFormatString上的JsonSerializer设置为您需要的格式即可。 Json.Net使用与.NET框架相同的format specifiers

以下是一个例子:

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