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

  • 相关阅读:
    three.js引擎基础知识—摄像机、场景及渲染器
    javaScript执行环境、作用域链与闭包
    zclip笔记:解决zclip失效问题
    jQuery笔记:checkbox
    jenkins笔记:手动更新插件
    Maven笔记:
    MyBatis笔记:invalid bound statement (not found)
    spring jpa data笔记
    springMVC笔记:@ResponseBody
    PDF笔记:内嵌字体
  • 原文地址:https://www.cnblogs.com/wjx-blog/p/15714551.html
Copyright © 2011-2022 走看看