码迷,mamicode.com
首页 > Windows程序 > 详细

C# 将任意对象快速转换为Json

时间:2018-01-16 18:33:48      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:自定义类   nbsp   tty   pos   大神   效率   stringbu   方便   格式   

由于最近项目里面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 = 0, 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 = 0, len = models.Count; i < len; i++)
    {
        if (0 != 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 = 0, 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

标签:自定义类   nbsp   tty   pos   大神   效率   stringbu   方便   格式   

原文地址:https://www.cnblogs.com/mr-yoatl/p/8296971.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!