zoukankan      html  css  js  c++  java
  • .net core 通过Json传datetime类型参数的问题[转发]

    现象:
    在.netcore 3.1 webapi中,使用json格式传入datetime类型参数时,会报解析失败异常,或者时间少8个小时,返回datetime类型值时返回的是utc时间;

    解决方法:
    第一步:自定义DateTime解析类

       public class DateTimeConverter : JsonConverter<DateTime>
       {
           public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
           {
               return DateTime.TryParse(reader.GetString(), out var dateTime) ? dateTime : default(DateTime);
           }
    
           public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
           {
               writer.WriteStringValue(value.ToString("yyyy-MM-dd HH:mm:ss"));
           }
       }

    DateTime?类型解析类

     public class DateTimeNullableConvert : JsonConverter<DateTime?>
        {
            public override DateTime? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
            {
                return DateTime.TryParse(reader.GetString(), out var dateTime) ? dateTime : default(DateTime?);
            }
    
            public override void Write(Utf8JsonWriter writer, DateTime? value, JsonSerializerOptions options)
            {
                writer.WriteStringValue(value?.ToString("yyyy-MM-dd HH:mm:ss"));
            }
        }

    第二步:在startup中加入此两个类:

                services.AddControllers().AddJsonOptions(config =>
                {
                    //此设定解决JsonResult中文被编码的问题
                    config.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
    
                    config.JsonSerializerOptions.Converters.Add(new DateTimeConverter());
                    config.JsonSerializerOptions.Converters.Add(new DateTimeNullableConvert());
                })

    版权声明:本文为CSDN博主「csdmwinter」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/csdmwinter/article/details/106564464

  • 相关阅读:
    progresql
    postgresql
    postgresql
    postgresql 索引
    postgresql 视图
    postgresql 触发器
    postgresql异常快速定位
    postgresql数据库备份和恢复
    amgular $q用法
    安装fcitx
  • 原文地址:https://www.cnblogs.com/wjx-blog/p/15714551.html
Copyright © 2011-2022 走看看