zoukankan      html  css  js  c++  java
  • Newtonsoft.Json 转换DateTime类型为字符串时,串内部会有一个T。解决方案

    使用Newtonsoft.Json 转换DateTime类型时,若使用标准转换,则字符串内会有一个T(虽然再转换成DateTime没有问题)。

    若要转换成DateTime没有T,可以加上特性:

     1 public class TestClass 
     2     {
     3         public TestClass()
     4         {
     5             Dt1 = Dt2 = new DateTime(1900, 1, 1, 0, 0, 0);
     6         }
     7 
     8         [JsonConverter(typeof(TcDateTimeConverter))]
     9         public DateTime Dt1 { get; set; }
    10 
    11         public DateTime Dt2 { get; set; }
    12     }
    13 
    14 
    15 
    16  /// <summary>
    17     /// DateTime Json序列化格式:yyyy-MM-dd HH:mm:ss
    18     /// </summary>
    19     public class TcFullDateTimeConverter : DateTimeConverterBase
    20     {
    21         private static IsoDateTimeConverter dtConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };
    22 
    23         public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    24         {
    25             return dtConverter.ReadJson(reader, objectType, ConvertHelper.ToDateTime(existingValue), serializer);
    26         }
    27 
    28         public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    29         {
    30             dtConverter.WriteJson(writer, ConvertHelper.ToDateTime(value), serializer);
    31         }
    32     }
    33 
    34     /// <summary>
    35     /// DateTime Json序列化格式:yyyy-MM-dd HH:mm
    36     /// </summary>
    37     public class TcDateTimeConverter : DateTimeConverterBase
    38     {
    39         private static IsoDateTimeConverter dtConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm" };
    40 
    41         public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    42         {
    43             return dtConverter.ReadJson(reader, objectType, ConvertHelper.ToDateTime(existingValue), serializer);
    44         }
    45 
    46         public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    47         {
    48             dtConverter.WriteJson(writer, ConvertHelper.ToDateTime(value), serializer);
    49         }
    50     }
    51 
    52     /// <summary>
    53     /// DateTime Json序列化格式:yyyy-MM-dd
    54     /// </summary>
    55     public class TcDateConverter : DateTimeConverterBase
    56     {
    57         private static IsoDateTimeConverter dtConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd" };
    58 
    59         public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    60         {
    61             return dtConverter.ReadJson(reader, objectType, ConvertHelper.ToDateTime(existingValue), serializer);
    62         }
    63 
    64         public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    65         {
    66             dtConverter.WriteJson(writer, ConvertHelper.ToDateTime(value), serializer);
    67         }
    68     }
    69 
    70     /// <summary>
    71     /// DateTime Json序列化格式:HH:mm
    72     /// </summary>
    73     public class TcTimeConverter : DateTimeConverterBase
    74     {
    75         private static IsoDateTimeConverter dtConverter = new IsoDateTimeConverter { DateTimeFormat = "HH:mm" };
    76 
    77         public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    78         {
    79             return dtConverter.ReadJson(reader, objectType, ConvertHelper.ToDateTime(existingValue), serializer);
    80         }
    81 
    82         public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    83         {
    84             dtConverter.WriteJson(writer, ConvertHelper.ToDateTime(value), serializer);
    85         }
    86     }
    View Code

    另外,若某字段如上加上TcDateTimeConverter,再转换为带TcDateTimeConverter特性或者不带该特性的标准DateTime,都没有问题。

  • 相关阅读:
    hwclock设置时间的调用过程是怎样的?
    git如何获取获取子模块的代码?
    hwclock和date源码分析
    linux内核是如何支持深度睡眠(deep sleep)方式的?
    mac下如何安装python3?
    linux内核中的__cpu_suspend是在哪里实现的呀?
    linux下安装oracle需要的配置
    linux实操常用命令总结
    linux下vi命令大全
    PHP100精华:很靠谱linux常用命令
  • 原文地址:https://www.cnblogs.com/nlh774/p/6986204.html
Copyright © 2011-2022 走看看