首页 > 解决方案 > 反序列化时将字符串转换为 DateTime

问题描述

我有一个这样的json

[{"date":"2019-04-03(13:43)","storyid":"123363},{""date":"2019-04-03(09:02)","storyid":"123555"},{"date":"2019-04-03(08:44)","storyid":"664224"}]

我正在使用 c# 和 .net 框架将 json 反序列化为这样的 NewsHeadlines 列表。

JsonConvert.DeserializeObject<List<NewsHeadline>>(json);

这可以按预期工作,只是我想要一个名为 Date 的特定格式的 DateTime 属性(“yyyy-MM-dd(HH:mm)”)。我可以在反序列化后更改日期时间的格式,但我很想知道是否有办法在设置级别更改它。有人可以帮我理解如何做到这一点吗?

    [DataMember(Name = "date")]
    public DateTime Date {get;set}

    [DataMember(Name = "storyid")]
    public string StoryId {get; set;}

所以最终结果可以是日期(DateTime 对象),值为 2019-04-03(13:43)

标签: c#.net

解决方案


    public class MyDateTimeConverter : IsoDateTimeConverter
    {
        public MyDateTimeConverter()
        {
            //Take care of the format here 
            base.DateTimeFormat ="yyyy-MM-dd(HH:mm)";
        }
    }

    [JsonConverter(typeof(MyDateTimeConverter))]
    public DateTime Date { get; set; }

推荐阅读