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

  • 相关阅读:
    cocos2d-x ios 设置横屏/竖屏(全)
    决策树之ID3算法实现(python)
    基于Spring开发的DUBBO服务接口测试
    Mac电脑下配置maven环境变量
    Mac Eclipse+Maven+TestNg+ReportNg 生成测试报告
    TestNG+Maven+IDEA环境搭建
    115个Java面试题和答案——终极列表(上)
    115个Java面试题和答案——终极列表(下)
    阿里巴巴常考面试题及汇总答案
    阿里面试回来,想和Java程序员谈一谈
  • 原文地址:https://www.cnblogs.com/luwenlong/p/7867031.html
Copyright © 2011-2022 走看看