一.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
