gpt4 book ai didi

c# - 使用 JsonConvert.DeserializeObject 反序列化 yyyyMMddTHHmmssZ 日期时间格式

转载 作者:太空宇宙 更新时间:2023-11-03 20:55:12 26 4
gpt4 key购买 nike

我有一个带有 DateTime 字段的 JSON,我使用 JsonConvert.DeserializeObject 对其进行反序列化,并且它按预期工作,除非我使用 yyyyMMddTHHmmssZ DateTime 格式是 ISO8601 之一格式。

根据IsoDateTimeConverter的文档:

Converts a to and from the ISO 8601date format (e.g. "2008-04-12T12:53Z").

那么为什么这段代码:

var serializeSettings=new JsonSerializerSettings();
serializeSettings.Converters.Add(new IsoDateTimeConverter());
var result= JsonConvert.DeserializeObject<EmployementHistory>(json,serializeSettings);

抛出以下异常:

{System.FormatException: String was not recognized as a validDateTime. at System.DateTimeParse.Parse(String s,DateTimeFormatInfo dtfi, DateTimeStyles styles) atNewtonsoft.Json.Converters.IsoDateTimeConverter.ReadJson(JsonReaderreader, Type objectType, Object existingValue, JsonSerializerserializer)

我的模型:

public class EmployementHistory
{
public string EmployeeName { get; set; }
public DateTime PositionChangeDate { get; set; }
}

Json 示例:

{ "employeename":"Tom", "PositionChangeDate":"20180710T135034Z" }

最佳答案

根据 official documentationIsoDateTimeConverter 有一个名为 DateTimeFormat 的公共(public)属性,您可以在其中设置自己的格式 -
所以您需要做的就是提供该格式:

var serializeSettings=new JsonSerializerSettings();
serializeSettings.Converters.Add(new IsoDateTimeConverter() {DateTimeFormat = "yyyyMMddTHHmmssZ"});
var result= JsonConvert.DeserializeObject<MyClass>(json,serializeSettings);

关于c# - 使用 JsonConvert.DeserializeObject 反序列化 yyyyMMddTHHmmssZ 日期时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51283463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com