.NetCore自定义WebAPI返回Json的格式大小写的三种方式
.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的格式大小写的三种方式的更多相关文章
- C# 对象与JSON字符串互相转换的三种方式
C# 对象与JSON字符串互相转换的三种方式 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 关于内存对象和JSON字符串的相互转换, ...
- JSON字符串互相转换的三种方式和性能比较
C# 对象与JSON字符串互相转换的三种方式 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 关于内存对象和JSON字符串的相互转换, ...
- NetCore偶尔有用篇:NetCore项目WebApi返回Json属性大小写
一.概述 1.前面文章介绍Controller的大小写问题时,目的只是介绍它的差异性,有同学回复了,这里把它作为一个点写一下吧. 二.默认定义的转换结果 1.写一个返回对象的方法. 2.运行查看结果. ...
- Json 序列化以及反序列化的三种方式(二)
1.什么是JSON? Json[javascript对象表示方法],它是一个轻量级的数据交换格式,我们可以很简单的来读取和写它,并且它很容易被计算机转化和生成,它是完全独立于语言的 2.Json支持下 ...
- WebApi返回Json格式字符串
WebApi返回json格式字符串, 在网上能找到好几种方法, 其中有三种普遍的方法, 但是感觉都不怎么好. 先贴一下, 网上给的常用方法吧. 方法一:(改配置法) 找到Global.asax文件,在 ...
- webapi返回json格式优化
一.设置webapi返回json格式 在App_Start下的WebApiConfig的注册函数Register中添加下面这代码 config.Formatters.Remove(config.For ...
- webapi返回json格式,并定义日期解析格式
1.webapi返回json格式 var json = config.Formatters.JsonFormatter; json.SerializerSettings.PreserveReferen ...
- (转)WebApi返回Json格式字符串
原文地址:https://www.cnblogs.com/elvinle/p/6252065.html WebApi返回json格式字符串, 在网上能找到好几种方法, 其中有三种普遍的方法, 但是感觉 ...
- webapi返回json格式优化 转载https://www.cnblogs.com/GarsonZhang/p/5322747.html
一.设置webapi返回json格式 在App_Start下的WebApiConfig的注册函数Register中添加下面这代码 1 config.Formatters.Remove(config.F ...
随机推荐
- 应用九:Vue之国际化(vue-i18n)
vue-i18n是一款针对Vue.js 的国际化插件,具体应用步骤如下: 一.安装插件 npm install vue-i18n --save 二.在main.js中引入插件 import VueI1 ...
- jQuery 工具类函数-字符串操作函数
调用名为$.trim的工具函数,能删除字符串中左右两边的空格符,但该函数不能删除字符串中间的空格,调用格式为: $.trim (str); 参数str表示需要删除左右两边空格符的字符串. <bo ...
- ZR993
ZR993 首先,这种和平方有关的,首先应当考虑根号做法 这道题目,我们可以直接暴力\(\log_{10}w + 10\)判断一个数是否能够由原数变化的到 直接\(O(\sqrt{n})\)枚举所有的 ...
- excel转换成实体
package com.cinc.ecmp.utils; import java.io.IOException; import java.io.InputStream; import java.lan ...
- vue-learning:25 - component - 概念-定义-注册-使用-命名
概念 Vue遵循Web Component规范,提供了自己的组件系统.组件是一段独立的代码,代表页面中某个功能块,拥有自己的数据.JS.样式,以及标签.组件的独立性是指形成自己独立的作用域,不会对其它 ...
- P4556 [Vani有约会]雨天的尾巴 (线段树合并)
P4556 [Vani有约会]雨天的尾巴 题意: 首先村落里的一共有n座房屋,并形成一个树状结构.然后救济粮分m次发放,每次选择两个房屋(x,y),然后对于x到y的路径上(含x和y)每座房子里发放一袋 ...
- js获取url参数值的方式
定义方法: function getParam(paramName) { paramValue = ""; isFound = false; paramName = paramNa ...
- 聊聊固态硬盘1--人生头两块SSD
第一块固态硬盘--浦科特m6s 来源:京东双11 价格:319rmb 第二款固态--饥饿鲨ocz arc100 来源:美国亚马逊 黑色星期五 价格:366rmb ...
- STM32与STM8操作寄存器的区别
在STM8中,由于STM8寄存器较少,在头文件中定义寄存器的时候不用采取任何形式的封装,所以操作寄存器的时候直接可以用如下方式处理:PB_DDR |=0x20; 但是在STM32中,由于其寄存器实在太 ...
- sybase的存储过程编写经验和方法
1.如果用到其他库的Table或View,务必在当前库中建立View来实现跨库操作,最好不要直接使用“databse.dbo.table_name”,因为sp_depends不能显示出该SP所使用的跨 ...