Asp.Net Core中使用Newtonsoft.Json進行序列化處理解決返回值首字母小寫


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM