WebApi 中使用AddNewtonsoftJson輸出Json格式數據


前言:
就目前而言,.Net Core WebApi中輸出格式幾乎都是json,但是在core中使用任何服務都需要配置,這里需要配置 AddNewtonsoftJson

一、我們來看一個例子:

        [Route("details")]
        [HttpGet]
        public ActionResult<JObject> Details()
        {
            var data = new
            {
                Id=1,
                Name="Lucy",
                Address="珠穆朗瑪峰",
                Time = DateTime.Now
            };
            return JObject.FromObject(data);

        }

不做任何配置,輸出:

可以看出,並沒有輸出我們想要的數據。

處理方法:

我們需要在Startup類中添加AddNewtonsoftJson配置

 public void ConfigureServices(IServiceCollection services)
 {
    services.AddControllers()
            .AddNewtonsoftJson();
 }

結果輸出:

得到正確的數據。

二、關於AddNewtonsoftJson

ASP.NET Core 3.0 之前的版本中,默認設置使用通過 Newtonsoft.Json 包實現的 JSON 格式化程序。 在 ASP.NET Core 3.0 或更高版本中,默認 JSON 格式化程序基於 System.Text.Json。

Newtonsoft.Json通過安裝 Microsoft.AspNetCore.Mvc.NewtonsoftJson NuGet 包並在中進行配置,可獲得對基於的格式化程序和功能的支持 Startup.ConfigureServices 。

AddNewtonsoftJson方法具有重載功能,可以進行多項配置,以下是一些常用的配置

services.AddControllers()
        .AddNewtonsoftJson(options =>
          {
            //修改屬性名稱的序列化方式,首字母小寫,即駝峰樣式
            options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

            //日期類型默認格式化處理 方式1
            options.SerializerSettings.Converters.Add(new IsoDateTimeConverter(){DateTimeFormat = "yyyy/MM/dd HH:mm:ss"});
            //日期類型默認格式化處理 方式2
            options.SerializerSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat;
            options.SerializerSettings.DateFormatString = "yyyy/MM/dd HH:mm:ss";

            //忽略循環引用
            options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;

            //解決命名不一致問題 
            options.SerializerSettings.ContractResolver = new DefaultContractResolver();
           
            //空值處理
            options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
});

從例子中可以看出,配置后的時間格式已經被格式化了。

微軟官方文檔地址:https://docs.microsoft.com/zh-cn/aspnet/core/web-api/advanced/formatting?view=aspnetcore-5.0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM