zoukankan      html  css  js  c++  java
  • NetCore3 System.Text.Json 的使用 控制台

    添加程序集:System.Text.Json

    using System.Text.Json;
    using System.Text.Json.Serialization;

    响应时间格式,中文乱码,响应驼峰命名

      services.AddControllers(x=>
                {
                    //x.Filters.Add();
                }) 
                  .AddJsonOptions(options=>
                  {
                      //options.JsonSerializerOptions.PropertyNamingPolicy = System.Text.Json.JsonNamingPolicy.CamelCase;
                      options.JsonSerializerOptions.PropertyNamingPolicy = null; //响应驼峰命名
                      options.JsonSerializerOptions.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping;//中文乱码
                      options.JsonSerializerOptions.Converters.Add(new Common.SystemTextJsonConvert.DateTimeConverter());//应时间格式
                      options.JsonSerializerOptions.Converters.Add(new Common.SystemTextJsonConvert.DateTimeNullableConverter()); //应时间格式
                  }).SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
      public class SystemTextJsonConvert
        {
            public class DateTimeConverter : JsonConverter<DateTime>
            {
                public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
                {
                    return DateTime.Parse(reader.GetString());
                }
    
                public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
                {
                    writer.WriteStringValue(value.ToString("yyyy-MM-dd HH:mm:ss"));
                }
            }
    
            public class DateTimeNullableConverter : JsonConverter<DateTime?>
            {
                public override DateTime? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
                {
                    return string.IsNullOrEmpty(reader.GetString()) ? default(DateTime?) : DateTime.Parse(reader.GetString());
                }
    
                public override void Write(Utf8JsonWriter writer, DateTime? value, JsonSerializerOptions options)
                {
                    writer.WriteStringValue(value?.ToString("yyyy-MM-dd HH:mm:ss"));
                }
            }
        }

    获取默认JsonSerializerOptions  对象:

     public static class JsonOpt
        {
            public static JsonSerializerOptions UnicodeRangesAll
            {
                get { return  DefaultOptions(); }
            }
    
            public static JsonSerializerOptions IgnoreNullValues
            {
                get 
                { 
                    JsonSerializerOptions options = DefaultOptions();
                    options.IgnoreNullValues = true;
                    return options;
                }
            }
    
            public static JsonSerializerOptions DefaultOptions(string dateTimeFormat = "yyyy-MM-dd HH:mm:ss")
            {
                JsonSerializerOptions Options = new JsonSerializerOptions() { PropertyNamingPolicy = null, WriteIndented = true, Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(UnicodeRanges.All) };
                Options.Converters.Add(new DateTimeConverterUsingDateTimeParse(dateTimeFormat));
                return Options;
            }
        }

    注册服务代码其实还是可以优化的,有时间的朋友去搞吧!

    付:

    控制台  System.Text.Json  中文乱码问题:

    var options = new JsonSerializerOptions();
                options.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(UnicodeRanges.All);
                var json = JsonSerializer.Serialize(new { title = "代码改变世界" }, options);
  • 相关阅读:
    Struts2 技术全总结 (正在更新)
    Servlet 技术全总结 (已完成,不定期增加内容)
    字节顺序&字节对齐
    Kubernetes 清除持续 Terminating 状态的Pods
    [K8s]无yaml文件重启Pod
    外部访问docker容器(docker run -p/-P 指令)
    Linux (OpenBSD)系统目录分析
    CPU Cache 机制以及 Cache miss
    ifconfig 中的 eth0 eth0:1 eth0.1 与 lo
    MYSQL 文件类型
  • 原文地址:https://www.cnblogs.com/wfpanskxin/p/12920525.html
Copyright © 2011-2022 走看看