ibcadmin 发表于 2019-12-26 09:05:41

asp.net core 3.0 MVC JSON 全局配置

<h4 id="asp.net-core-3.0-mvc-json-全局设置">asp.net core 3.0 MVC JSON 全局设置</h4>
<ul>
<li>System.Text.Json(default)</li>
</ul>
<ol>
<li>startup设置代码如下:</li>
</ol>
<code>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;
            });
}</code>
<code>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"));
      }
    }</code>
<ol>
<li><a href="https://docs.microsoft.com/zh-cn/dotnet/api/system.text.json?view=netcore-3.0">官方API</a></li>
</ol>
<ul>
<li>Newtonsoft.Json</li>
</ul>
<ol>
<li>Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson -Version 3.1.0</li>
<li>startup设置代码如下:</li>
</ol>
<code>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;
            });
}</code>
页: [1]
查看完整版本: asp.net core 3.0 MVC JSON 全局配置