Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法使用UTC和非UTC格式的日期时间反序列化JSON_C#_Json_Datetime_Json.net - Fatal编程技术网

C# 无法使用UTC和非UTC格式的日期时间反序列化JSON

C# 无法使用UTC和非UTC格式的日期时间反序列化JSON,c#,json,datetime,json.net,C#,Json,Datetime,Json.net,我正在从外部API读取JSON。由于某些原因,datetime值的格式不同,我无法使用Newtonsoft.Json将其自动反序列化到我的对象中 例如,假设以下是我的JSON,两个datetime值中唯一的差异是第一个值以“Z”结尾,第二个值不以“Z”结尾: 字符串json={\DateTime1\:\20131101T000000Z\,\DateTime2\:\20131101T000000\} 然后我需要将2个datetime字段解析为包含DateTime1和DateTime2属性的对象,如

我正在从外部API读取JSON。由于某些原因,datetime值的格式不同,我无法使用Newtonsoft.Json将其自动反序列化到我的对象中

例如,假设以下是我的JSON,两个datetime值中唯一的差异是第一个值以“Z”结尾,第二个值不以“Z”结尾: 字符串json={\DateTime1\:\20131101T000000Z\,\DateTime2\:\20131101T000000\}

然后我需要将2个datetime字段解析为包含DateTime1和DateTime2属性的对象,如下所示:

福班 { 公共日期时间日期时间1{get;set;} 公共日期时间日期时间2{get;set;} } 我的反序列化代码如下所示:

var format=yyyymmddthhmmsz;//您的日期时间格式 var dateTimeConverter=new IsoDateTimeConverter{DateTimeFormat=format}; JsonSerializerSettings serializerSettings=新的JsonSerializerSettings; serializerSettings.DateTimeZoneHandling=DateTimeZoneHandling.Local; serializerSettings.DateFormatHandling=DateFormatHandling.IsoDateFormat; serializerSettings.DateParseHandling=DateParseHandling.DateTimeOffset; 字符串json={\DateTime1\:\20131101T000000Z\,\DateTime2\:\20131101T000000\}; 尝试 { var serializer=JsonSerializer.CreateserializerSettings; var o3=JsonConvert.DeserializeObjectjson,dateTimeConverter; } 特例 { var x=ex.Message.ToString; } 回来 运行上面的代码可以让我:

字符串未被识别为有效的日期时间


任何帮助都将不胜感激

您的IsoDateTimeConverter的日期时间格式字符串看起来不正确,请尝试根据以下内容更新它

var dateTimeConverter=new IsoDateTimeConverter{DateTimeFormat=yyyymmddthhmmsk}; 根据,,
K格式说明符用于时区信息,没有Z格式说明符

感谢alot Pavel。我想是这样的,但我不知道如何用UTC格式表示“Z”。你的回答非常有效!