1.与前端交互时,前端总希望传过去的json字段名首字母小写,但是.net规范是首字线大写

如果就写了下面的转换方法

/// <summary>
/// Poco类字段名转换成首字母小写的字典
/// 用于 MVC 的 new JsonResult(){Data=xxx} 后前端Javascript使用
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static dynamic PocoToFirstCharLowerJsonResultData<T>(this T obj) where T : class
{
var objJson = obj.ToJson();
var dict = objJson.ToInstance<Dictionary<string, object>>(); return dict.ToDictionary(p => p.Key[].ToString().ToLower() + p.Key.Substring(), p => p.Value);
} /// <summary>
/// 普通类字段名转换成首字母小写的字典
/// 用于 MVC 的 new JsonResult(){Data=xxx} 后前端Javascript使用
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static dynamic ToFirstCharLowerJsonResultData<T>(this T obj) where T : class
{
var objJson = obj.ToJson();
var rx = new Regex(@"""(?<v>(\w)*?)"":", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Singleline);
var match = rx.Match(objJson);
while (match.Success)
{
var originalKeyName = match.Result("${v}");
var currentKeyName = originalKeyName[].ToString().ToLower() + originalKeyName.Substring();
objJson = rx.Replace(objJson, "\"" + currentKeyName + "\":", , match.Index);
match = match.NextMatch();
} var dict = objJson.ToInstance<Dictionary<string, object>>(); return dict.ToDictionary(p => p.Key[].ToString().ToLower() + p.Key.Substring(), p => p.Value);
}

2.Controller调用如下

 public ActionResult QueryAllModels()
{
var response = this.Service.QueryModels(); return new JsonResult(){Data=response .ToFirstCharLowerJsonResultData()};
}

3.另一种实现,用 Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver

/// <summary>
/// JsonResult,驼峰式转换
/// </summary>
public class LowerCamelJsonResult : ActionResult
{
/// <summary>
/// 目标对象
/// </summary>
public object Data { get; set; } /// <summary>
/// 构造器
/// </summary>
public LowerCamelJsonResult() { } /// <summary>
/// 构造器
/// </summary>
public LowerCamelJsonResult(object data)
{
this.Data = data;
} /// <summary>
/// 重写执行结果
/// </summary>
/// <param name="context"></param>
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
{
throw new ArgumentNullException("context");
} //json对象命名小驼峰式转换
var json = JsonConvert.SerializeObject(
this.Data,
Formatting.Indented,
new JsonSerializerSettings { ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver() }
); context.HttpContext.Response.Write(json);
}
}

调用方法

 public ActionResult QueryAllModels()
{
var response = this.Service.QueryModels(); return new LowerCamelJsonResult(){Data=response };
}

c# MVC返回小驼峰Json(首字母小写)的更多相关文章

  1. fastjson转换json字符串key的首字母小写变大写的解决办法

    https://blog.csdn.net/erbao_2014/article/details/53688934 问题描述在开发过程中,由于接口文档的描述,要求json字符串的key首字母为大写,而 ...

  2. C#实体对象序列化成Json并让字段的首字母小写的两种解决方法

    引言:最近在工作中遇到与某些API对接的post的数据需要将对象的字段首字母小写.解决办法有两种:第一种:使用对象的字段属性设置JsonProperty来实现(不推荐,因为需要手动的修改每个字段的属性 ...

  3. C#实体对象序列化成Json,并让字段的首字母小写

    引言:最近在工作中遇到与某些API对接的post的数据需要将对象的字段首字母小写.解决办法有两种:第一种:使用对象的字段属性设置JsonProperty来实现(不推荐,因为需要手动的修改每个字段的属性 ...

  4. webapi时间字段返回格式设置及返回model首字母小写

    GlobalConfiguration.Configuration.Formatters.Remove(new XmlMediaTypeFormatter()); // 解决json序列化时的循环引用 ...

  5. 关于spring的注解方式注入默认值(转) -- 首字母小写

    1.是首字母小写 比如 UserAction对应的id是userAction 可以通过ApplicationContext 对象的act.getBean("userAction") ...

  6. 一起写框架-Ioc内核容器的实现-基础功能-容器对象名默认首字母小写(八)

    实现功能 --前面实现的代码-- 默认的对象名就类名.不符合Java的命名规范.我们希望默认的对象名首字母小写. 实现思路 创建一个命名规则的帮助类.实现将对大写开头的对象名修改为小写开头. 实现步骤 ...

  7. IntelliJ IDEA的自动提示貌似是区分大小写的,首字母小写的话,怎么都提示不出来。

    IntelliJ IDEA的自动提示貌似是区分大小写的,首字母小写的话,怎么都提示不出来. File>Settings>editor >general >code comple ...

  8. 【JSON.NET】json序列化小驼峰格式(属性名首字母小写)

    废话少说,先上代码 var setting = new JsonSerializerSettings { ContractResolver = new Newtonsoft.Json.Serializ ...

  9. spring boot json 首字母大小写问题解决方案

     spring boot默认使用的json解析框架是jackson,对于.net转java的项目来说太坑了,首字母大写的属性会自动转为小写,然后前端就悲剧了,十几个属性的ViewModel增加几个Js ...

随机推荐

  1. 数字图像处理实验(14):PROJECT 06-01,Web-Safe Colors 标签: 图像处理MATLAB 2017-05-27 20:45 116人阅读

    实验要求: Objective: To know what are Web-safe colors, how to generate the RGB components for a given jp ...

  2. tensorflow rank

    可把tensorflow 中的tensor 理解为一个n维数组或列表, tensor 为静态变量,拥有动态维度.在tf中, 只有tensor能在节点和图计算中传递.

  3. Luogu 4900 食堂

    一道把很多东西放在一起的练手题. $$\sum_{i = A}^{B}\sum_{j = 1}^{i}\left \{ \frac{i}{j} \right \} = \sum_{i = A}^{B} ...

  4. 在Struts2的Action中取得请求参数值的几种方法

    先看GetRequestParameterAction类代码: public class GetRequestParameterAction extends ActionSupport { priva ...

  5. Struts2获取Action中的数据

    当我们用Struts2框架开发时,经常有要获取jsp页面的数据或者在jsp中获取后台传过来的数据(Action),那么怎么去获取自己想要的数据呢? 后台获取前端数据: 在java程序中生成要获取字段的 ...

  6. PostgreSQL 速查、备忘手册 | PostgreSQL Quick Find and Tutorial

    PostgreSQL 速查.备忘手册 作者:汪嘉霖 这是一个你可能需要的一个备忘手册,此手册方便你快速查询到你需要的常见功能.有时也有一些曾经被使用过的高级功能.如无特殊说明,此手册仅适用于 Linu ...

  7. 编写高质量代码改善C#程序的157个建议——建议37:使用Lambda表达式代替方法和匿名方法

    建议37:使用Lambda表达式代替方法和匿名方法 在建议36中,我们创建了这样一个实例程序: static void Main(string[] args) { Func<int, int, ...

  8. SQL cast 函数

    (1).CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型.以下例子用于将文本字符串'12'转换为整型: SELECT CAST('12' AS int) (2).返回值是 ...

  9. Java并发编程的3个特性

    一.原子性 原子行:即一个或者多个操作作为一个整体,要么全部执行,要么都不执行,并且操作在执行过程中不会被线程调度机制打断:而且这种操作一旦开始,就一直运行到结束,中间不会有任何上下文切换(conte ...

  10. c++最短路经典问题

    一提起最短路,各位oier会想到什么呢? floyd,spfa,dij,或是bellman-ford? 其实,只要学会一种算法,大部分最短路问题就能很快解决了. 他就是堆优化的dijkstra. 首先 ...