在 C# 项目中,我正在检索一个 Event 对象,其中包含 subject (string)、location (string)、start_time (datetime)、end_time (datetime)、all_day_event (boolean) 和 calendar_id (int) 属性,作为 JSON 响应休息请求。该请求从数据库获取数据,并且 start_time 和 end_time 列的类型也是该数据库上的日期时间。但我在获取日期时间类型值时遇到问题。我得到这样的 JSON 对象:[ { "id": 1, "subject": "Test Event 1", "location": "Test Location", "start_time": "2019-08-22 10:17:53", "end_time": "2019-08-22 10:17:55", "all_day_event": 0, "calendar_id": 1 }]这是我的事件类:public class Event { public int Id { get; set; } public string Subject { get; set; } public string Location { get; set; } public DateTime StartTime { get; set; } public DateTime EndTime { get; set; } public bool AllDayEvent { get; set; } public int CalendarId { get; set; } }这就是我反序列化 JSON 对象的方式:events = JsonConvert.DeserializeObject<Event[]>(response.Content);当我直接打印该 JSON 对象时,它会正确显示。但在我反序列化后,时间值显示为 01/01/0001 12:00 AM。我已经搜索了一段时间了。我找到了Deserialize Json Object - DateTime、Deserializing Import Io JSON with multiple object、Deserialize multiple json into object c#建议,但它们没有帮助。那么有什么方法可以正确获取这些时间值吗?太感谢了。
1 回答
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
您需要装饰具有不同命名约定的属性。请记住,Json.Net 会自动将 JSON 的SnakeCase映射到 C# 的PascalCase属性。但是,如果你有snake_case或其他东西,你需要装饰属性。
public class Event
{
public int Id { get; set; }
public string Subject { get; set; }
public string Location { get; set; }
[JsonProperty("start_time")]
public DateTime StartTime { get; set; }
[JsonProperty("end_time")]
public DateTime EndTime { get; set; }
[JsonProperty("all_day_event")]
public bool AllDayEvent { get; set; }
[JsonProperty("calendar_id")]
public int CalendarId { get; set; }
}
另外,你可以设置全局命名策略,以避免修饰你的模型的所有属性,例如如果JSON遵循snake_case
- 1 回答
- 0 关注
- 80 浏览
添加回答
举报
0/150
提交
取消