在反序列化为JObject

时间:2017-09-21 20:33:57

标签: c# datetime serialization json.net

大家。我有一个与json deserilizing(Newtonsoft.Json)相关的quastion。我不理解进程反序列化DateTime类型和日期时间格式化字符串,换句话说类型字符串,其中写的是这样的日期" 01.01.2000"在JObject中,这个字段是字符串。

例如:

[ { "DateOfBirth": "10.02.1990", "SomeString": "01.12.1888" } ]

我使用下一个反序列化设置:

new JsonSerializerSettings
{
   ContractResolver = new CamelCasePropertyNamesContractResolver(),
   MissingMemberHandling = MissingMemberHandling.Ignore,
   DateParseHandling = DateParseHandling.None,
   DateFormatHandling = DateFormatHandling.IsoDateFormat,
   DateFormatString = "dd.MM.yyyy",
   Converters = new List<JsonConverter>()
   {
      new StringEnumConverter(),
      new IsoDateTimeConverter
      {
         DateTimeFormat = "dd.MM.yyyy"
      }
   },
   Error = (sender, args) =>
   {
      args.ErrorContext.Handled = true;
   },
}

默认情况下,我希望第一个字段反序列化为DateTime 10/02/1990 00:00:00,第二个字段反序列化为某个对象中的简单字符串。但事实并非如此。两个字段都转换为DateTime格式。 如果我在没有IsoDateTimeConverter的情况下设置DateParseHandling.None,则结果将是下一个:DateTime反序列化为空值,字符串将具有&#34; 01.12.1888&#34;。但如果我同时设置了这两个设置,那么一切正常。

有人可以解释这种情况吗?为了在不设置随机设置的情况下获得正确的结果并希望运气,我该怎么做?

0 个答案:

没有答案