c# - 使用 Json.Net 以 dd/MM/yyyy 格式反序列化日期

标签 c# json json.net

我正在尝试将 JSON 数据中的对象反序列化为 C# 类(我使用的是 Newtonsoft Json.NET)。数据包含日期为字符串值,如 09/12/2013其中格式为 dd/MM/yyyy .

如果我调用 JsonConvert.DeserializeObject<MyObject>(data) , 日期加载到 DateTime带有 MM/dd/yyyy 的 C# 类的属性格式,这会导致日期值为 12 September 2013 (而不是 9 December 2013 )。

是否可以配置JsonConvert获取正确格式的日期?

最佳答案

您可以使用 IsoDateTimeConverter 并指定 DateTimeFormat 来获得您想要的结果,例如:

MyObject obj = JsonConvert.DeserializeObject<MyObject>(jsonString, 
                   new IsoDateTimeConverter { DateTimeFormat = "dd/MM/yyyy" });

演示:

class Program
{
    static void Main(string[] args)
    {
        string json = @"{ ""Date"" : ""09/12/2013"" }";

        MyObject obj = JsonConvert.DeserializeObject<MyObject>(json, 
            new IsoDateTimeConverter { DateTimeFormat = "dd/MM/yyyy" });

        DateTime date = obj.Date;
        Console.WriteLine("day = " + date.Day);
        Console.WriteLine("month = " + date.Month);
        Console.WriteLine("year = " + date.Year);
    }
}

class MyObject
{
    public DateTime Date { get; set; }
}

输出:

day = 9
month = 12
year = 2013

关于c# - 使用 Json.Net 以 dd/MM/yyyy 格式反序列化日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21256132/

相关文章:

c# - 如何使用反射设置属性值

javascript - 从对象中获取子 JSON 值

php - JSON 响应 header

json - 如何在 Asp.Net Core Controller 返回的 json 中保留属性的大小写?

c# - 序列化为 JSON 时排除集合中的特定项目

c# - 为不同语言开发 ASP.NET 网站

c# - 如何在 MarkupExtension 的设计时获取静态资源值?

c# - 将点对象添加到 ZedGraph

json - 我如何将带有混合类型值的 json 转换为带有 Scala 和 json Spray 的 json

c# - Mac OSX 上的 Newtonsoft JSON.NET 6.0.8 和 Mono 以光荣的方式失败