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 ...
随机推荐
- luogu2577/bzoj1899 午餐 (贪心+dp)
首先,应该尽量让吃饭慢的排在前面,先按这个排个序 然后再来决定每个人到底去哪边 设f[i][j]是做到了第i个人,然后1号窗口目前的总排队时间是j,目前的最大总时间 有这个i和j的话,再预处理出前i个 ...
- luogu1080 国王游戏(贪心+高精度)
貌似这道题是碰巧蒙对了贪心的方式..就是把ai*bi越小的放在越前面 (不过也符合直觉) 然后统计答案需要用高精度,然后就调了一年 #include<cstdio> #include< ...
- POJ1088(记忆搜索加dp)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 106415 Accepted: 40499 Description ...
- hdu 3038(扩展并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3038 题意:给出区间[1,n],下面有m组数据,l r v区间[l,r]之和为v,每输入一组数据,判断 ...
- linux动态库与静态库混合连接
1, 在应用程序需要连接外部库的情况下,linux默认对库的连接是使用动态库,在找不到动态库的情况下再选择静态库.使用方式为: gcc test.cpp -L. -ltestlib 如果当前目录有 ...
- A1001. A+B Format
Calculate a + b and output the sum in standard format -- that is, the digits must be separated into ...
- 集合总结(全是代码)----------java基础学习
前言:在刚学习的时候,切记不能粘贴复制,更不能眼高手低,再简单的代码,都要自己独立动手写. 第一步:目录结构 第二步:代码区 Student.java:(一个学生的实体类) package com.m ...
- make_blobs
一.make_blobs简介 scikit中的make_blobs方法常被用来生成聚类算法的测试数据,直观地说,make_blobs会根据用户指定的特征数量.中心点数量.范围等来生成几类数据,这些数据 ...
- CM记录-Hbase启用安全认证控制
1.cm-cluster2-HBase-2-HBase 安全授权(hbase.security.authorization)-simple改为true 2.添加配置 1)超级用户-加入root.hba ...
- jquery :checked(过滤选择器) 和 空格:checked(后代选择器)【转】
jquery 过滤选择器 和 后代选择器 <%@ page language="java" contentType="text/html; charset=UTF- ...