C# 将任意对象快速转换为Json
由于最近项目里面Model类特别多,而我需要编写所有数据交互的接口,传输的格式是json,以前都是通过循环List<T>中的对象向StringBuilder对象中Apped字符串生成json,而这样一来这次项目岂不是得写死人,想了想不能冒这个风险,因此觉得写一个通用的Model转json的方法如下:
/// <summary>
/// 转换T为json
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="model">对象</param>
/// <returns>json</returns>
private string ConvertToJson<T>(T model)
{
//获取属性集合
PropertyInfo[] properties = model.GetType().GetProperties();
StringBuilder sb = new StringBuilder();
sb.Append("{");
//遍历属性集合
for (int i = , len = properties.Length; i < len; i++)
{
if(0!=i)sb.Append(",");
sb.AppendFormat("\"{0}\":\"{1}\"",
properties[i].Name.ToLower(),//属性名作为 键
properties[i].GetValue(model, null).ToString());//属性值作为 值
}
sb.Append("}");
return sb.ToString();
}
通过泛型可以接收任意自定义类型进行操作;
完成了这个之后突然我又发现还是要循环很多List<T>,也很麻烦,所以干脆再重载一下,既可以直接转Model,也可以直接转List<Model>岂不是更加方便,于是(此处是完整代码):
/// <summary>
/// 转换List<T>为json
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="models"></param>
/// <returns></returns>
private string ConvertToJson<T>(List<T> models)
{
StringBuilder sb = new StringBuilder();
for (int i = , len = models.Count; i < len; i++)
{
if ( != i)
sb.Append(",");
sb.Append(ConvertToJson(models[i]));
}
return sb.ToString();
} /// <summary>
/// 转换T为json
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="model"></param>
/// <returns></returns>
private string ConvertToJson<T>(T model)
{
//获取属性集合
PropertyInfo[] properties = model.GetType().GetProperties();
StringBuilder sb = new StringBuilder();
sb.Append("{");//遍历属性集合
for (int i = , len = properties.Length; i < len; i++)
{
if(0!=i)sb.Append(",");
sb.AppendFormat("\"{0}\":\"{1}\"",
properties[i].Name.ToLower(),//属性名作为 键
properties[i].GetValue(model, null).ToString());//属性值作为 值
}
sb.Append("}");
return sb.ToString();
}
至此完毕,代码中组织json格式效率方面还望有大神提出宝贵建议!
C# 将任意对象快速转换为Json的更多相关文章
- Jquery-根据标签的name属性,获取其value值。存入对象并且转换为Json数组
<li id="testinput" name="testinput" value="1" />分类1:标签1</li&g ...
- 在将对象数组转换为json字符串
private List<WHCombineBatchFragmentBarcodeEnterEvent.Message.Data> dataList = new ArrayList< ...
- 对象转换为json格式,类似中间层API
<一头扎进SpringMvc视频教程\<一头扎进SpringMvc>第四讲 源码\> 对象自动转换为json格式要在 spring-mvc.xml添加一个东西 ,和对应的命名空 ...
- Java技巧——将前端的对象数组通过Json字符串传到后端并转换为对象集合
Java技巧——将前端的对象数组通过Json字符串传到后端并转换为对象集合 摘要:本文主要记录了如何将将前端的对象数组通过Json字符串传到后端,并在后端将Json字符串转换为对象集合. 前端代码 前 ...
- C#中的DataSet、string、DataTable、对象转换成Json的实现代码
C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// ...
- js中 json对象的转化 JSON.parse()
JSON.parse() 方法用来解析JSON字符串,json.parse()将字符串转成json对象.构造由字符串描述的JavaScript值或对象.提供可选的reviver函数用以在返回之前对所得 ...
- js压缩xml字符串,将xml字符串转换为xml对象,将xml对象转换为json对象
/** * 压缩xml字符串 */ function compressXmlStr(str){ var prefix, suffix; var i = str.indexOf("\r&quo ...
- JavaScript操作JSON的方法总结,JSON字符串转换为JSON对象
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- 【荐】使用eval()、new Function()将JSON字符串转换为JSON对象
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用j ...
随机推荐
- cf1063B Labyrinth (bfs)
可以证明,如果我搜索的话,一个点最多只有两个最优状态:向左剩余步数最大时和向右剩余步数最大时 然后判一判,bfs就好了 dfs会T惨... #include<bits/stdc++.h> ...
- change username on ubuntu.
Below tutorial will show you how to change username in ubuntu 12.04 precise.First,we need login as r ...
- CF 468B Two Sets
题意: 给定n个正整数与a,b两个集合,求一种方案使得这n个数恰好被分在这两个集合中且集合中无多余的数且若x在a中则A-x在a中,若x在b中则B-x在b中. 题意理解了我好半天... 解法1:并查集. ...
- @DisallowConcurrentExecution 注解的作用 【定时器执行完当前任务才开启下一个线程的方式】
转: @DisallowConcurrentExecution 注解的作用 2018年10月12日 16:42:40 fly_captain 阅读数:4317 Quartz定时任务默认都是并发执行 ...
- Codeforce使用方式
突然想起写这个东西,因为当时新手的我,完全不知道cf的比赛该如何参加,因为近期没有比赛,所以我会在有比赛时截图再写这个博客,我会在2018/5/10号之前完成,想看的先关注一下.
- LINUX_正则表达式
『正规表示法与通配符是完全不一样的东西!』这很重要喔!因为『通配符 (wildcard) 代表癿是 bash 操作接口癿一个功能』,但正觃表示法则是一种字符串处理癿表示方式 . (小数点):代表『 ...
- ansible 循环与条件判断when
普通循环 with_itemes 变量组 { item } 循环变量 示例 - name: 覆盖配置文件 copy: src=/root/{{ item }} dest=/root/test/{{ i ...
- Nginx插件之openresty反向代理和日志滚动配置案例
Nginx插件之openresty反向代理和日志滚动配置案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.openresty介绍 1>.Nginx介绍 Nginx是一款 ...
- Spark集群之yarn提交作业优化案例
Spark集群之yarn提交作业优化案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.启动Hadoop集群 1>.自定义批量管理脚本 [yinzhengjie@s101 ...
- 拒绝了对对象 'Proc_LHDashBoard' (数据库 'jy',架构 'dbo')的 EXECUTE 权限。”
没有权限,在数据库里面开启权限.找到你那个访问的用户名,然后: