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 ...
随机推荐
- git 28原则
一.流程 $ git init # 创建一个新的仓库 sublime 编写文本,不要使用win自带文本编辑器 $ git add file1 # 将文件添加到暂存区 $ git add file2 $ ...
- 端午漫谈(附:Ubuntu18.04下轻量截图软件)
先说声端午快乐- 有空就陪陪家人吧.今天陪外公吃了顿饭,陪老人家聊了会天,颇有点感触.发现技术真的是改变生活,小孩抖音自学跳舞,大人微信刷又刷,很多天海一方的老朋友都可以联系到了... 其实最有感触的 ...
- C++11新特性——range for
很多编程语言都有range for语法功能,自C++11起,终于将这个重要功能加入C++标准中.range for语句,可以方便的遍历给定序列中的每个元素并对其执行某种操作. 1.基本语法 for(d ...
- SwitchButton 开关按钮 的多种实现方式 (附源码DEMO)
http://blog.csdn.net/vipzjyno1/article/details/23707149 Switch开关android源码SwitchButton 刚开始接触开关样式的按钮是在 ...
- CF294C Shaass and Lights
题目大意: 有n盏灯,(0<=n<=1000),有m盏已经点亮,每次只能点亮与已经点亮的灯相邻的灯,求总方案数,答案对1e9+7取模 第一行:两个整数n,m表示灯的总数和已点亮的灯的数目 ...
- 跟我一起使用electron搭建一个文件浏览器应用吧(二)
这个文件浏览器应用可以具备以下两种功能噢- This file browser application can have the following two functions. 一:用户浏览文件夹和 ...
- xor定理证明
xor 证明: 0 xor 0=0 0 xor 1=1 1 xor 0=1 1 xor 1=0 0 xor 其它数,数值不会改变1 xor 其它数,数值会反转 所以x个数0和y个数1进行xor运算(0 ...
- js中this的总结
http://www.blogjava.net/baoyaer/articles/105864.html 在面向对象编程语言中,对于this关键字我们是非常熟悉的.比如C++.C#和Java等都提供了 ...
- vuejs怎么在服务器部署?(知乎)
作者:知乎用户链接:https://www.zhihu.com/question/46630687/answer/157166318来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...
- springboot项目中jdk版本的问题
几经周折,在idea中修改了多次jdk编译为1.8,可是一编译就恢复到默认的1.7版本. 在经过多次这个博客的修改内容: https://blog.csdn.net/li396864285/artic ...