[HowTo] .Net Core 3.1 取消參數小駝峰轉換設定

阿蘇卡
Aug 11, 2021

--

Photo by Andrew Neel on Unsplash

最近(又)要幫專案從 ASP.Net Core 2.1 升級至 3.1,每次改版都要重新研究,乾脆開文紀錄!

回傳欄位為小駝峰式命名

看看專案中的屬性定義:皆為頭文字大寫 — 大駝峰式命名法 (Pascal Case)

但是回傳時卻是小駝峰式命名法 (Camel case):

修正法 — 使用 System.Text.Json

如果使用 System.Text.Json 為 JSON 處理核心,設定方法為:

在 Startup.cs — ConfigureServices() 中加入 AddJsonOptions() 設定:

⚠️注意:要寫在 AddControllers() / AddMvc() / AddRazorPages() 之後// for API application
services.AddControllers()
.AddJsonOptions(options => options.JsonSerializerOptions.PropertyNamingPolicy = null);
// for web application - MVC
services.AddMvc()
.AddJsonOptions(options => options.JsonSerializerOptions.PropertyNamingPolicy = null);
// for web application
services.AddRazorPages()
.AddJsonOptions(options => options.JsonSerializerOptions.PropertyNamingPolicy = null);

修正法 — 使用 Newtonsoft.Json

ASP.NET Core 3.0 起,移除對 Newtonsoft.Json 函式庫的依賴,改採用內建 System.Text.Json 作為 JSON 處理核心。

但是,開發者還是能選擇(堅持)使用 Newtonsoft.Json。

需先安裝套件

Microsoft.AspNetCore.Mvc.NewtonsoftJson

調整方式一樣要在 Startup.cs - ConfigureServices():

services.AddControllers()
.AddNewtonsoftJson(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());

(偷懶只舉例 API application,其他兩種請自行類推 )

就在以為可以打完收工的時候,打開 Swagger 頁面突然發現參數怎麼還是小駝峰式寫法 (登楞

因為已經改用了 Newtonsoft.Json,要告知 swagger 要一併改用 Newtonsoft.Json。

先安裝套件:

Swashbuckle.AspNetCore.Newtonsoft

在 Startup.cs — ConfigureServices() 中增加設定:

⚠️注意:要寫在 AddSwaggerGen() 之後services.AddSwaggerGen()
.AddSwaggerGenNewtonsoftSupport();

這樣就大功告成囉!

以上內容希望對各位有幫助
有任何建議歡迎留言 📝

--

--

阿蘇卡
阿蘇卡

Written by 阿蘇卡

後端工程師。記錄下自己開發路上踩過的坑、研究過後的心得,希望對自己好,對其他工程師也好~

No responses yet