zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    HashMap 和 Hashtable 的区别
    提高利用运行(安装)内存
    MyEclipse、Hbuilder、Idea快捷键
    本地安装MySQL详细教程
    MyEclipse/Eclipse相关设置
    MyEclipse 10导入JDK1.7或1.8
    Oracle视图(和Mysq一样l)
    Oracle事务
    MySql综合知识汇总
    Mysql存储过程
  • 原文地址:https://www.cnblogs.com/luwenlong/p/7867031.html
Copyright © 2011-2022 走看看