代码之家  ›  专栏  ›  技术社区  ›  EJoshuaS - Stand with Ukraine

使用Newtonsoft反序列化可能只包含一年的日期戳

  •  0
  • EJoshuaS - Stand with Ukraine  · 技术社区  · 6 年前

    所以,我有一个JSON对象,它包含候选人完成学位的日期。日期格式不是特别标准化,可能只包括他们完成学位的年份。我正在尝试使用Newtonsoft反序列化此JSON,但出现以下异常:

    读取JSON时发生异常:Newtonsoft.Json.JsonReaderException:无法将字符串转换为日期时间:2003

    异常消息非常直接:它不将仅包含年份的字符串识别为有效的DateTime。

    有什么方法可以解决这个问题(例如,让它总是反序列化到指定年份的1月1日),还是让这个字段成为模型类中的字符串?

    3 回复  |  直到 6 年前
        1
  •  4
  •   Mark Redman    6 年前

    反序列化时,

    将年度反序列化为 int 并添加另一个返回完整日期的属性。

    public class MyObject
    {
      [JsonProperty("year")]
      public int Year { get; set; }
    
      [JsonIgnore]
      public DateTime FullDate() {
         return new DateTime (this.Year, 1, 1, 0, 0, 0);
      } 
    }
    
        2
  •  2
  •   ebol2000    6 年前

    DateTime 是一个结构,总是包含一个精确的历史点。您可能需要考虑简单地为 .