.NetCore自定义WebAPI返回Json的格式大小写的三种方式

摘要:
services.AddMvc().AddJsonOptions(options=>set;}publicoverridevoidOnActionExecuted(ActionExecutedContextactionExecutedCntext){varjsonResult=(JsonResult)actionExecutedTontext.Result;

.NetCore的Controller/WebAPI可以帮我们将返回结果自动转换为Json格式给前台,而且可以自由设定格式(大写、小写、首字母大写等),我总结了三种方法,对应三种灵活度,供大家参考

(一)通过Startup.cs设置项目级别的格式

  在项目Startup.cs中增加如下配置:

services.AddMvc().AddJsonOptions(options => { options.SerializerSettings.ContractResolver = new DefaultContractResolver(); }); 

       默认为保持原样,也可设定为CamelCasePropertyNamesContractResolver(),即首字母小写的驼峰格式。

       本身是没有将属性全部小写的方法,我这里提供一个参考,大家可以自定义想要的格式:

 public class LowercaseContractResolver : Newtonsoft.Json.Serialization.DefaultContractResolver
    {
        protected override string ResolvePropertyName(string propertyName)
        {
            return propertyName.ToLower();
        }
    }

(二)设置Controller/WebAPI级别的统一格式转换,这里用到了ActionFilterAttribute,扩展出一个CustomActionJsonFormatAttribute标签

public class CustomActionJsonFormatAttribute : ActionFilterAttribute
    {
        private Type _ContractResolver { get; set; }
        public CustomActionJsonFormatAttribute(Type ContractResolver)
        {
            _ContractResolver = ContractResolver;
        }
        public override void OnActionExecuted(ActionExecutedContext actionExecutedContext)
        {var jsonResult = (JsonResult)actionExecutedContext.Result;
                jsonResult.SerializerSettings = new JsonSerializerSettings
                {
                    ContractResolver = Activator.CreateInstance(_ContractResolver) as IContractResolver
                };

                actionExecutedContext.Result = jsonResult;
        }
    }

使用时在Controller/WebAPI中添加如下代码即可,即可以在class层面添加,也可以在Action上添加:

[CustomActionJsonFormat(typeof(LowercaseContractResolver))]

public IActionResult EntityInfo([Required]string entityid) { ... }

(三)在代码返回的时候设置JsonResult,这个是最灵活但也最麻烦的方式:

 return new JsonResult(new Entity
                    {
                        EntityId = entityid,
                        Name = entityType.Name,
                        OrganizationId = Permission.getCurrentUserOrg().ORG_GID
                    }, new JsonSerializerSettings
                    {
                        ContractResolver = new LowercaseContractResolver()
                    });

免责声明:文章转载自《.NetCore自定义WebAPI返回Json的格式大小写的三种方式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SQLServer 错误: 15404,维护计划无法执行通过Unity导出的Android Studio和Google安卓原生工程的结构图对比下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CSS在线字体库,外部字体的引用方法@font-face

@font-face是CSS3中的一个模块,他主要是把自己定义的Web字体嵌入到你的网页中,随着@font-face模块的出现,我们在Web的开发中使用字体不怕只能使用Web安全字体,你们当中或许有许多人会不自然的问,这样的东西IE能支持吗?当我告诉大家@font-face这个功能早在IE4就支持了你肯定会感到惊讶。我的Blog就使用了许多这样的自定义We...

Centos6/7下静默安装oracle10g

Centos6/7下静默安装Oracle10g 远程安装oracle10g,通过网上资料,不断摸索成功安装。先在本地虚拟机Centos7上做实验,快照恢复快照恢复,安装了几十次成功之后,再在服务器Centos6上安装,(6和7还是有区别的,比如默认防火墙)中间遇到各种问题特记录下来分享。 在linux下安装oracle主要注意点: 1.关闭不必要的服务...

ligerUI框架

一、介绍 ligerUI是一个轻量级的前端开发框架。简单的说,就是能够帮助开发快速搭建网页,并且不需要更多的写前端代码,能够在最短的时间内开发出一套美观,优雅的前端界面。 需要掌握的技术有html,css,js,jquery,json,还有一些后端代码能力,不然就不能开发出自己想要的功能咯。 首先进入官网下载一个ligerUI的demo,下载好之后的效果...

iOS 后台运行实现

iOS 后台运行的规则 应用的运行状态分为以下五种:Not running:应用还没有启动,或者应用正在运行但是途中被系统停止。Inactive:当前应用正在前台运行,但是并不接收事件(当前或许正在执行其它代码)。一般每当应用要从一个状态切换到另一个不同的状态时,中途过渡会短暂停留在此状态。唯一在此状态停留时间比较长的情况是:当用户锁屏时,或者系统提示用户...

批量文件编码格式转化

前言   前段时间帮别人调试程序,在windows下能正常显示的输出,在linux下输出的全是乱码?后来发现windows默认的文件编码而是GB2312,而linux下的文件默认是utf-8,所以导致了这个问题。另一个问题就是用source insight看源码的问题,对windows下的文本文件都能看的中文源码注释,在si中居然是乱码,后来发现si居然不...

C#也玩尾递归(续)

  大约半年前,我写过一篇文章《C#也玩尾递归》,里面介绍了一种技巧使得C#也能实现尾递归,不再像普通递归调用那样受调用栈的限制。   今天重新看了下文中最后的实现代码,感觉还是不够满意:因为引入了一个对用户来说不是很必要的数据结构RecFunc<>,用户需要定义的代码大概是这样: (rec,i,n,a,b) => (n<3 ?...