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

前言:web

        就目前而言,.Net Core WebApi中輸出格式幾乎都是json,可是在core中使用任何服務都須要配置,這裏須要配置 AddNewtonsoftJsonjson

1、咱們來看一個例子:api

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

不作任何配置,輸出:spa

 

 

 能夠看出,並無輸出咱們想要的數據。code

處理方法:orm

咱們須要在Startup類中添加AddNewtonsoftJson配置blog

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

結果輸出:文檔

 

 

 獲得正確的數據。get

2、關於AddNewtonsoftJsonio

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.DateFormatString = "yyyy/MM/dd HH:mm:ss";
});

從例子中能夠看出,配置後的時間格式已經被格式化了。

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

相關文章
相關標籤/搜索