asp.net core 3.1 MVC/WebApi JSON 全局配置

  • 2020 年 3 月 12 日
  • 筆記

asp.net core 3.1 MVC/WebApi JSON 全局配置

  • System.Text.Json(default)
  1. startup配置代码如下:
using System.Text.Encodings.Web;  using System.Text.Json;  using System.Text.Unicode;    public void ConfigureServices(IServiceCollection services)  {       services.AddJsonOptions(options =>              {                  //格式化日期时间格式                  options.JsonSerializerOptions.Converters.Add(new DatetimeJsonConverter());                  //数据格式首字母小写                  //options.JsonSerializerOptions.PropertyNamingPolicy =JsonNamingPolicy.CamelCase;                  //数据格式原样输出                  options.JsonSerializerOptions.PropertyNamingPolicy = null;                  //取消Unicode编码                  options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);                  //忽略空值                  options.JsonSerializerOptions.IgnoreNullValues = true;                  //允许额外符号                  options.JsonSerializerOptions.AllowTrailingCommas = true;                  //反序列化过程中属性名称是否使用不区分大小写的比较                  options.JsonSerializerOptions.PropertyNameCaseInsensitive = false;              });  }
using System;  using System.Text.Json;  using System.Text.Json.Serialization;      public class DatetimeJsonConverter : JsonConverter<DateTime>      {          public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)          {              if (reader.TokenType == JsonTokenType.String)              {                  if (DateTime.TryParse(reader.GetString(), out DateTime date))                      return date;              }              return reader.GetDateTime();          }            public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)          {              writer.WriteStringValue(value.ToString("yyyy-MM-dd HH:mm:ss"));          }      }
  1. 官方API
  • Newtonsoft.Json
  1. Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson -Version 3.1.0
  2. startup配置代码如下:
using Newtonsoft.Json;  using Newtonsoft.Json.Serialization;  public void ConfigureServices(IServiceCollection services)  {      services.AddNewtonsoftJson(options =>              {                  //设置时间格式                  options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";                  //忽略循环引用                  options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;                  //数据格式首字母小写                  //options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();                  //数据格式按原样输出                  options.SerializerSettings.ContractResolver = new DefaultContractResolver();                  //忽略空值                  options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;              });  }