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 ...
随机推荐
- awk实例
AWK-F 以XX为分割df -lh | grep boot | awk '{print $5}' | awk -F '%' '{print $1}'grep "bash" /et ...
- K8s核心概念详解
kubernetes(通常简称为K8S),是一个用于管理在容器中运行的应用的容器编排工具. Kubernetes不仅有你所需要的用来支持复杂容器应用的所有东西,它还是市面上最方便开发和运维的框架. K ...
- 洛谷P3230 比赛
emmmmmm,这个之前讲课的原题居然出到比赛里了. 我怒肝2h+然后A了此题,结果还是被某高一巨佬吊打...... 题意:n个球队两两比赛,胜得3分,败得0分,平得1分. 现有一个总分表,求问可能的 ...
- vim安装自动补全插件
1. 先安装Pathogen,以便后续的插件安装. 打开网址https://github.com/tpope/vim-pathogen可以查看具体安装方法. a.创建目标并安装: mkdir -p ~ ...
- 二分图判定 POJ-2492
这是由AC代码改的模板,不能直接交啊 #include<iostream> #include<vector> #include<cstring> using nam ...
- Windows 系统安装多个版本JDK, 修改环境变量不生效
1. 前提: 1) 配置环境变量: JAVA_HOME 2) 配置PATH: 添加%JAVA_HOME%\bin 2. 解决: 1) 确保最新的, 你希望使用的JDK, 配置在PATH的字符串的前面, ...
- SQL Server 窗口函数详解:OVER()
语法 开窗函数支持分区.排序和框架三种元素,其语法格式如下: OVER ( [ <PARTITION BY clause> ] [ <ORDER BY clause> ] [ ...
- request请求地址
1.String contextPath = httpServletRequest.getServletContext().getContextPath(); /项目名称 2.String conte ...
- 3、Python-字符串
下标 name = 'abcdef' print(name[0]) print(name[1]) print(name[2]) # a # b # c 切片 # 切片的语法:[起始:结束:步长] na ...
- bzoj千题计划302:bzoj3160: 万径人踪灭
https://www.lydsy.com/JudgeOnline/problem.php?id=3160 不连续的回文串数量=所有的回文序列数量-连续的回文子串 连续的回文子串: manacher ...