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