JSON.NET 是十分好用的套件,在 ASP.NET Core 1.0 開始內建 JSON.NET方便開發者快速使用,建立 ASP.NET Core 範本專案時會在 ConfigureServices 中的 addMVC 就可以開始使用,這篇介紹如何在 ASP.NET Core 中定義 JSON.NET 統一輸出格式的設定,若有問題歡迎留言一起討論。
範例代碼
首先建立 ASP.NET Core Web App 專案,使用範本專案中有的預設 Value Controller 並將其進行修改,將 Get 與 Get(id) API 修改為自訂的 UserInfo,下
使用 Get 方法會回傳下列內容[HttpGet] public ActionResult<UserInfo> Get() { return new UserInfo() { Name = "Marcus", LoginTime = DateTime.Now.ToString(CultureInfo.CurrentCulture) }; } [HttpGet("{id}")] public ActionResult<Dictionary<string, string>> Get(int id) { return new Dictionary<string, string> { { "Name", "Marcus" }, { "LoginTime", DateTime.Now.ToString(CultureInfo.CurrentCulture) } }; } public class UserInfo { public string Name { get; set; } public string LoginTime { get; set; } }
{ "name": "Marcus", "loginTime": "2019/5/29 下午 09:26:51" }另一個接口 Get 帶參數 id 的接口,使用自訂的 Dictionary 回傳內容
{ "Name": "Marcus", "LoginTime": "2019/5/29 下午 09:35:19" }可以發現 Get 與 Get (id) 回傳的 Json 內容有些微差異,原因是因為在 ASP.NET Core 中回傳的 Json 元素預設會使用 駝峰式大小寫 (PascalCase) 中的 小駝峰式命名法,也就是第一個單字開頭會小寫,第二個單字為大寫,如果希望回傳的統一固定格式的話,可以在 ConfigureServices 加入 addJsonOptions 進行調整,在 MvcJsonOptions 中提供兩種方法 UseCamelCasing 與 UseMemberCasing 來設定 JSON 序列化的大小寫行為
設定方式
預設小寫 - Camel Case
在 AddJsonOptions 中提供 UseCamelCasing 方法設定輸出格式,帶統一為小寫,設定方式如下
services.AddMvc() .AddJsonOptions(opt => opt.UseCamelCasing(true));
{ "name": "Marcus", "loginTime": "2019/5/29 下午 22:26:51" }
預設大寫 - Pascal Case
在 AddJsonOptions 中使用 DefaultContractResolver 方法設定統一為大寫,設定方式如下
services.AddMvc() .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
{ "Name": "Marcus", "LoginTime": "2019/5/29 下午 23:16:11" }
Json.Net
參考
0 意見:
張貼留言