回傳欄位為小駝峰式命名
看看專案中的屬性定義:皆為頭文字大寫 — 大駝峰式命名法 (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();
這樣就大功告成囉!
以上內容希望對各位有幫助
有任何建議歡迎留言 📝