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

  • 相关阅读:
    UOJ #455 [UER #8]雪灾与外卖 (贪心、模拟费用流)
    Codeforces 482E ELCA (LCT)
    Codeforces 798D Mike and distribution (构造)
    AtCoder AGC017C Snuke and Spells
    HDU 6089 Rikka with Terrorist (线段树)
    HDU 6136 Death Podracing (堆)
    AtCoder AGC032D Rotation Sort (DP)
    jenkins+python+kubectl实现批量更新k8s镜像
    Linux 下载最新kubectl版本的命令:
    jenkins X 和k8s CI/CD
  • 原文地址:https://www.cnblogs.com/luwenlong/p/7867031.html
Copyright © 2011-2022 走看看