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

标签 c# json datetime json.net

我正在使用 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>>();

我无法正确读取所有日期时间字段。当上面的代码运行时,我们可以看到plan变量中的值。我可以读取 ResetDate 和 PayDate,但无法正确读取 periodEnd 和 periodStart。它返回默认日期“1/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; }
}

关于c# - 通过 Newtonsoft.Json 将 JSON 消息的日期时间数组解析为 C# 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20377154/

相关文章:

excel - 如何在 VBA 语句中使用 WEEKNUM 函数?

c# - Nhibernate 在选择时做更新?

c# - .Net CLR 卸载与关闭?

javascript - XMLHttpRequest 在 Google Chrome Packaged Web App 中不起作用

java - 如何检查 ISO 日期字符串中是否存在偏移量

python - flask 中的奇怪错误 :

c# - 优雅的构建后事件失败

c# - 通过索引获取列表项

java - 使用 Gson 在 Java 中对 HashMap<Int,Object> 进行序列化/反序列化

javascript - AngularJS 格式 JSON 字符串输出