通过Newtonsoft.JSON将JSON消息的日期时间数组解析为c#时出错



我正在使用Newtonsoft.Json库来解析c#中的Json消息

string json = @"{'SomeSchedule': [
      {
        'PeriodEnd': '2014-05-28',
        'PeriodStart': '2014-02-28',
        'ResetDate': '2014-05-26',
        'PayDate': '2014-05-28'
      },
      {
        'PeriodEnd': '2014-02-28',
        'PeriodStart': '2013-11-29',
        'ResetDate': '2014-02-26',
        'PayDate': '2014-02-28'
      },
      {
        'PeriodEnd': '2014-12-01',
        'PeriodStart': '2014-08-28',
        'ResetDate': '2014-11-26',
        'PayDate': '2014-12-01'
      },
      {
        'PeriodEnd': '2014-08-28',
        'PeriodStart': '2014-05-28',
        'ResetDate': '2014-08-26',
        'PayDate': '2014-08-28'
      }
    ],
    }";

数据类别:

    public class Data
    {
        public DateTime PeriodEndDate { get; set; }
        public DateTime PeriodStartDate { get; set; }
        public DateTime ResetDate { get; set; }
        public DateTime PayDate { get; set; }
    }

分析

 JObject dataObject1 = JObject.Parse(json);
        var plan = dataObject1["SomeSchedule"].ToObject<IList<Data>>();

我无法正确读取所有DateTime字段。当上面的代码运行时,我们可以看到计划变量中的值。我可以读取ResetDate和PayDate,但PeriodEnd和PeriodStart的读取不正确。它返回默认日期"1/0001"。

有人能告诉我在上面的代码中我做错了什么吗?

更改属性名称以匹配json:中的数据

public class Data
{
    public DateTime PeriodEnd { get; set; } // instead of PeriodEndDate
    public DateTime PeriodStart { get; set; } // instead of PeriodStartDate
    public DateTime ResetDate { get; set; }
    public DateTime PayDate { get; set; }
}

或者使用JsonProperty属性映射您的属性:

public class Data
{
    [JsonProperty("PeriodEnd")]
    public DateTime PeriodEndDate { get; set; }
    [JsonProperty("PeriodStart")]
    public DateTime PeriodStartDate { get; set; }
    public DateTime ResetDate { get; set; }
    public DateTime PayDate { get; set; }
}

相关内容

  • 没有找到相关文章

最新更新