1、Asp.Net Core中的Json序列化處理使用的是Newtonsoft.Json,更多參考:C# Newtonsoft.Json JsonSerializerSettings配置序列化操做,C# Json序列化工具--Newtonsoft.Json簡介和使用html
1.Newtonsoft.Json僅 依賴.Net Standard因此支持.Net Framework也支持.Net Coreajax
2.更多說明json
/* * 1.在Core Mvc中JsonResult 默認支持Get請求 * 2.使用JQuery的ajax請求,返回json數據自動轉換成 object對象 * 3.在 Core Mvc的 後臺JsonResult序列化的時候,默認狀況下自動 處理 的命名規則,改爲了 js的駝峯格式 * 4.在 Core Mvc中json 的序列化發序列化使用的是Newtonsoft.Json庫 * 5.默認沒有處理循環引用的問題 */
2、使用實例app
Jquery 的ajax get請求ide
$('#btnOne').click(function () { //使用ajax get請求json 數據 $.get('@Url.Action("DataOne")', {}, function (data) { console.info(data); console.info(data[0].menuName); }); });
1.默認狀況,使用駝峯樣式處理字段名Key工具
public JsonResult DataThree() { //Ef Core如今 不支持延遲加載,對於關聯表數據都爲null List<Menu> menus = _context.Menu .ToList(); return Json(menus); }
2.設置不使用駝峯格式處理,由後臺字段肯定大小寫,也就是默認格式oop
public JsonResult DataOne() { List<Menu> menus = _context.Menu.ToList(); JsonSerializerSettings settings = new JsonSerializerSettings(); //EF Core中默認爲駝峯樣式序列化處理key //settings.ContractResolver = new CamelCasePropertyNamesContractResolver(); //使用默認方式,不更改元數據的key的大小寫 settings.ContractResolver = new DefaultContractResolver(); return Json(menus, settings); }
3.處理循環引用,加載關聯表數據、post
public JsonResult DataTwo() { List<Menu> menus = _context.Menu .Include(q => q.Model) .ToList(); //處理循環引用問題 JsonSerializerSettings settings = new JsonSerializerSettings(); settings.MaxDepth = 2; settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; //設置不處理循環引用 return Json(menus, settings); }
3、全局設置,Json序列化配置ui
IMvcBuilder依賴注入擴展了MvcJsonMvcBuilderExtensions配置this
定義以下 :
// // 摘要: // Extensions methods for configuring MVC via an Microsoft.Extensions.DependencyInjection.IMvcBuilder. public static class MvcJsonMvcBuilderExtensions { // // 摘要: // Adds configuration of Microsoft.AspNetCore.Mvc.MvcJsonOptions for the application. // // 參數: // builder: // The Microsoft.Extensions.DependencyInjection.IMvcBuilder. // // setupAction: // The Microsoft.AspNetCore.Mvc.MvcJsonOptions which need to be configured. public static IMvcBuilder AddJsonOptions(this IMvcBuilder builder, Action<MvcJsonOptions> setupAction); }
MvcJsonOptions:
// // 摘要: // Provides programmatic configuration for JSON in the MVC framework. public class MvcJsonOptions { public MvcJsonOptions(); // // 摘要: // Gets the Newtonsoft.Json.JsonSerializerSettings that are used by this application. public JsonSerializerSettings SerializerSettings { get; } }
在Startup文件中修改
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc() //全局配置Json序列化處理 .AddJsonOptions(options => { //忽略循環引用 options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; //不使用駝峯樣式的key options.SerializerSettings.ContractResolver = new DefaultContractResolver(); //設置時間格式 options.SerializerSettings.DateFormatString = "yyyy-MM-dd"; } ); }
更多: