C# JSON.NET反序列化自定义日期格式

C# 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

我想将类似于20160101000000000的日期反序列化为UTC类型的DateTime

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\"";