[英]Parse JSON response with multiple datetime formats to c# object
This is what the JSON response is:这是 JSON 响应:
{
"data": [
{
"someTicketNumber": "123456",
"callInDateTimeUtc": "2020-09-09T20:16:26Z",
"lastUpdatedDateTimeUtc": "2020-09-09T20:28:11Z",
"availableDateLocalToSomeplace": "2020-09-10",
"availableTimeLocalToSomeplace": "T10:30:00Z"
}
]
}
A simple JsonConvert.DeserializeObject<T>(json)
returns {9/10/2020 12:00:00 AM}
for availableDateLocalToSomeplace
and {9/11/2020 10:30:00 AM}
for availableTimeLocalToSomeplace
.一个简单的
JsonConvert.DeserializeObject<T>(json)
返回{9/10/2020 12:00:00 AM}
为availableDateLocalToSomeplace
和{9/11/2020 10:30:00 AM}
为availableTimeLocalToSomeplace
。 I only want 9-10-2020
and 10:30:00 AM
respectively.我只需要
9-10-2020
和10:30:00 AM
。 I can't put a generic converter settings like this:我不能像这样放置通用转换器设置:
JsonConvert.DeserializeObject<T>(json, new
JsonSerializerSettings
{
DateFormatString = "yyyy-MM-dd" OR "THH:mm:ssZ"
});
because I need 2 different format types.因为我需要 2 种不同的格式类型。 How do I accomplish this?
我该如何实现?
In this case you can do like this: Create a CustomDateTimeConverter
class, and pass the format to it's constructor, like so在这种情况下,您可以这样做:创建一个
CustomDateTimeConverter
类,并将格式传递给它的构造函数,就像这样
public class DateFormatConverter : IsoDateTimeConverter
{
public DateFormatConverter(string format)
{
DateTimeFormat = format;
}
}
In the c# class,在 c# 类中,
public partial class Tickets
{
[JsonProperty("data")]
public TicketProps[] Data { get; set; }
}
public partial class TicketProps
{
[JsonProperty("someTicketNumber")]
public string SomeTicketNumber { get; set; }
[JsonProperty("callInDateTimeUtc")]
[JsonConverter(typeof(DateFormatConverter), "yyyy-MM-ddTHH:mm:ssZ")]
public DateTime? CallInDateTimeUtc { get; set; }
[JsonProperty("lastUpdatedDateTimeUtc")]
[JsonConverter(typeof(DateFormatConverter), "yyyy-MM-ddTHH:mm:ssZ")]
public DateTime? LastUpdatedDateTimeUtc { get; set; }
[JsonProperty("availableDateLocalToSomeplace")]
[JsonConverter(typeof(DateFormatConverter), "yyyy-MM-dd")]
public DateTime?AvailableDateLocalToSomeplace { get; set; }
[JsonProperty("availableTimeLocalToSomeplace")]
[JsonConverter(typeof(DateFormatConverter), "THH:mm:ssZ")]
public DateTime? AvailableTimeLocalToSomeplace { get; set; }
}
Now your simple JsonConvert.DeserializeObject<T>(json)
will work just fine.现在你简单的
JsonConvert.DeserializeObject<T>(json)
就可以正常工作了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.