C# JSON.NET反序列化自定义日期格式
我想将类似于20160101000000000的日期反序列化为UTC类型的DateTimeC# JSON.NET反序列化自定义日期格式,c#,.net,json,datetime,json.net,C#,.net,Json,Datetime,Json.net,我想将类似于20160101000000000的日期反序列化为UTC类型的DateTime var data = "20160101000000000"; var dateTime = JsonConvert.DeserializeObject<DateTime>(data, new IsoDateTimeConverter { DateTimeFormat = "yyyyMMddhhmmssfff"}); 试着跟随 var data = "20160101
var data = "20160101000000000";
var dateTime = JsonConvert.DeserializeObject<DateTime>(data,
new IsoDateTimeConverter { DateTimeFormat = "yyyyMMddhhmmssfff"});
试着跟随
var data = "20160101000000000";
var dateTime = new DateTime(JsonConvert.DeserializeObject<Int64>(data));
或者实现自定义日期时间转换器
public class CustomDateTimeConverter : DateTimeConverterBase
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{ return; }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
return new DateTime(Convert.ToInt64(reader.Value));
}
}
像这样使用
var data = "20160101000000000";
var dateTime = JsonConvert.DeserializeObject<DateTime>(data, new CustomDateTimeConverter());
记住,在JSON中,字符串必须被引用。因此,数据中的内容实际上不是JSON字符串,而是一个数字。如果您希望JSON.NET以您期望的方式解析此内容,则需要将其用引号括起来:
var data = "\"20160101000000000\"";
var data = "\"20160101000000000\"";