一.Newtonsoft.Json僅 依賴.Net Standard所以支持.Net Framework也支持.Net Core
二.使用實例
Jquery 的ajax get請求
$('#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() { List<Menu> menus = _context.Menu .ToList(); return Json(menus); }
2.設置不使用駝峰格式處理,由后台字段確定大小寫,也就是默認格式(基本搞定)
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.處理循環引用,加載關聯表數據
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); }
三、全局設置,Json序列化配置(每次都寫設置太麻煩)
在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"; } ); }
大功告成。
原作者:https://www.cnblogs.com/tianma3798/p/6918548.html