zoukankan      html  css  js  c++  java
  • C#封装的一个JSON操作类

    • using System;
      using System.Collections.Generic;
      using System.Collections;
      using System.Text;
      using System.Data;
      using System.Reflection;
      using System.Data.Common;
      
      namespace ZGZY.Common
      {
          /// <summary>
          /// JSON帮助类
          /// </summary>
          public class JsonHelper
          {
              #region 通用方法
              /// <summary>
              /// 格式化字符型、日期型、布尔型
              /// </summary>
              public static string StringFormat(string str, Type type)
              {
                  if (type == typeof(string))
                  {
                      str = StringFilter(str);
                      str = """ + str + """;
                  }
                  else if (type == typeof(DateTime) || type == typeof(DateTime?))
                  {
                      str = """ + str + """;
                  }
                  else if (type == typeof(bool))
                  {
                      str = str.ToLower();
                  }
                  else if (type == typeof(Guid))
                  {
                      str = """ + str + """;
                  }
                  else if (type != typeof(string) && string.IsNullOrEmpty(str))
                  {
                      str = """ + str + """;
                  }
                  return str;
              }
      
              /// <summary>
              /// 过滤字符串
              /// </summary>
              public static string StringFilter(string str)
              {
                  StringBuilder sb = new StringBuilder();
                  for (int i = 0; i < str.Length; i++)
                  {
                      char c = str.ToCharArray()[i];
                      switch (c)
                      {
                          case '"':
                              sb.Append("\""); break;
                          case '\':
                              sb.Append("\\"); break;
                          case '/':
                              sb.Append("\/"); break;
                          case '':
                              sb.Append("\b"); break;
                          case 'f':
                              sb.Append("\f"); break;
                          case '
      ':
                              sb.Append("\n"); break;
                          case '
      ':
                              sb.Append("\r"); break;
                          case '	':
                              sb.Append("\t"); break;
                          default:
                              sb.Append(c); break;
                      }
                  }
                  return sb.ToString();
              }
              #endregion
      
              #region 列转json
              /// <summary>
              /// 列转json
              /// </summary>
              /// <param name="dt"></param>
              /// <param name="r"></param>
              public static string ColumnToJson(DataTable dt, int r)
              {
                  StringBuilder strSql = new StringBuilder();
                  for (int i = 0; i < dt.Rows.Count; i++)
                  {
                      strSql.Append(dt.Rows[i][r]);
                      strSql.Append(",");
                  }
                  return strSql.ToString().Trim(',');
              }
              #endregion
      
              #region 对象转json
              /// <summary>
              /// 对象转json
              /// </summary>
              public static string ToJson(object jsonObject)
              {
                  StringBuilder sb = new StringBuilder();
                  sb.Append("{");
                  PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties();
                  for (int i = 0; i < propertyInfo.Length; i++)
                  {
                      object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, null);
                      Type type = propertyInfo[i].PropertyType;
                      string strValue = objectValue.ToString();
                      strValue = StringFormat(strValue, type);
                      sb.Append(""" + propertyInfo[i].Name + "":");
                      sb.Append(strValue + ",");
                  }
                  sb.Remove(sb.Length - 1, 1);
                  sb.Append("}");
                  return sb.ToString();
              }
              #endregion
      
              #region list转json
              /// <summary>
              /// list转json
              /// </summary>
              public static string ListToJson<T>(IList<T> list)
              {
                  object obj = list[0];
                  return ListToJson<T>(list, obj.GetType().Name);
              }
      
              private static string ListToJson<T>(IList<T> list, string JsonName)
              {
                  StringBuilder Json = new StringBuilder();
                  if (string.IsNullOrEmpty(JsonName))
                      JsonName = list[0].GetType().Name;
                  Json.Append("{"" + JsonName + "":[");
                  if (list.Count > 0)
                  {
                      for (int i = 0; i < list.Count; i++)
                      {
                          T obj = Activator.CreateInstance<T>();
                          PropertyInfo[] pi = obj.GetType().GetProperties();
                          Json.Append("{");
                          for (int j = 0; j < pi.Length; j++)
                          {
                              Type type = pi[j].GetValue(list[i], null).GetType();
                              Json.Append(""" + pi[j].Name.ToString() + "":" + StringFormat(pi[j].GetValue(list[i], null).ToString(), type));
                              if (j < pi.Length - 1)
                              {
                                  Json.Append(",");
                              }
                          }
                          Json.Append("}");
                          if (i < list.Count - 1)
                          {
                              Json.Append(",");
                          }
                      }
                  }
                  Json.Append("]}");
                  return Json.ToString();
              }
              #endregion
      
              #region 对象集合转换为json
              /// <summary>
              /// 对象集合转换为json
              /// </summary>
              /// <param name="array">对象集合</param>
              /// <returns>json字符串</returns>
              public static string ToJson(IEnumerable array)
              {
                  string jsonString = "[";
                  foreach (object item in array)
                  {
                      jsonString += ToJson(item) + ",";
                  }
                  jsonString = jsonString.Substring(0, jsonString.Length - 1);
                  return jsonString + "]";
              }
              #endregion
      
              #region 普通集合转换Json
              /// <summary>    
              /// 普通集合转换Json   
              /// </summary>   
              /// <param name="array">集合对象</param> 
              /// <returns>Json字符串</returns>  
              public static string ToArrayString(IEnumerable array)
              {
                  string jsonString = "[";
                  foreach (object item in array)
                  {
                      jsonString = ToJson(item.ToString()) + ",";
                  }
                  jsonString.Remove(jsonString.Length - 1, jsonString.Length);
                  return jsonString + "]";
              }
              #endregion
      
              #region  DataSet转换为Json
              /// <summary>    
              /// DataSet转换为Json   
              /// </summary>    
              /// <param name="dataSet">DataSet对象</param>   
              /// <returns>Json字符串</returns>    
              public static string ToJson(DataSet dataSet)
              {
                  string jsonString = "{";
                  foreach (DataTable table in dataSet.Tables)
                  {
                      jsonString += """ + table.TableName + "":" + ToJson(table) + ",";
                  }
                  jsonString = jsonString.TrimEnd(',');
                  return jsonString + "}";
              }
              #endregion
      
              #region Datatable转换为Json
              /// <summary>     
              /// Datatable转换为Json     
              /// </summary>    
              public static string ToJson(DataTable dt)
              {
                  if (dt.Rows.Count > 0)
                  {
                      StringBuilder jsonString = new StringBuilder();
                      jsonString.Append("[");
                      DataRowCollection drc = dt.Rows;
                      for (int i = 0; i < drc.Count; i++)
                      {
                          jsonString.Append("{");
                          for (int j = 0; j < dt.Columns.Count; j++)
                          {
                              string strKey = dt.Columns[j].ColumnName;
                              string strValue = drc[i][j].ToString();
      
                              Type type = dt.Columns[j].DataType;
                              jsonString.Append(""" + strKey + "":");
                              strValue = StringFormat(strValue, type);
                              if (j < dt.Columns.Count - 1)
                                  jsonString.Append(strValue + ",");
                              else
                                  jsonString.Append(strValue);
                          }
                          jsonString.Append("},");
                      }
                      jsonString.Remove(jsonString.Length - 1, 1);
                      jsonString.Append("]");
                      return jsonString.ToString();
                  }
                  else
                      return "[]";
              }
      
              /// <summary>    
              /// DataTable转换为Json
              /// </summary>    
              public static string ToJson(DataTable dt, string jsonName)
              {
                  StringBuilder Json = new StringBuilder();
                  if (string.IsNullOrEmpty(jsonName))
                      jsonName = dt.TableName;
                  Json.Append("{"" + jsonName + "":[");
                  if (dt.Rows.Count > 0)
                  {
                      for (int i = 0; i < dt.Rows.Count; i++)
                      {
                          Json.Append("{");
                          for (int j = 0; j < dt.Columns.Count; j++)
                          {
                              Type type = dt.Rows[i][j].GetType();
                              Json.Append(""" + dt.Columns[j].ColumnName.ToString() + "":" + StringFormat(dt.Rows[i][j].ToString(), type));
                              if (j < dt.Columns.Count - 1)
                                  Json.Append(",");
                          }
                          Json.Append("}");
                          if (i < dt.Rows.Count - 1)
                              Json.Append(",");
                      }
                  }
                  Json.Append("]}");
                  return Json.ToString();
              }
              #endregion
      
              #region DataReader转换为Json
              /// <summary>     
              /// DataReader转换为Json     
              /// </summary>     
              /// <param name="dataReader">DataReader对象</param>     
              /// <returns>Json字符串</returns>  
              public static string ToJson(DbDataReader dataReader)
              {
                  StringBuilder jsonString = new StringBuilder();
                  jsonString.Append("[");
                  while (dataReader.Read())
                  {
                      jsonString.Append("{");
                      for (int i = 0; i < dataReader.FieldCount; i++)
                      {
                          Type type = dataReader.GetFieldType(i);
                          string strKey = dataReader.GetName(i);
                          string strValue = dataReader[i].ToString();
                          jsonString.Append(""" + strKey + "":");
                          strValue = StringFormat(strValue, type);
                          if (i < dataReader.FieldCount - 1)
                              jsonString.Append(strValue + ",");
                          else
                              jsonString.Append(strValue);
                      }
                      jsonString.Append("},");
                  }
                  dataReader.Close();
                  jsonString.Remove(jsonString.Length - 1, 1);
                  jsonString.Append("]");
                  return jsonString.ToString();
              }
              #endregion
      
      
              #region 返回错误
              public static string error()
              {
                  DataTable dt = new DataTable();
                  dt.Columns.Add("error", typeof(int));
                  DataRow dr = dt.NewRow();
                  dr["error"] = 1;
                  dt.Rows.Add(dr);
                  return ToJson(dt);
              }
              #endregion
      
          }
      }
  • 相关阅读:
    windows live sync, mesh, skydrive
    忘记SQL SERVER密码的解决
    处理ObjectDataSource调用中DAL层中的异常
    C#中获取应用程序路径的方法(集合)
    datatable复制一行数据到本表
    [Yii Framework] yii中如何在查询的时候使用数据库函数
    [Yii Framework] yii的路由配置
    [Yii Framework] 已经定义的命名空间常量
    [Yii Framework] yii中关于filter
    [Yii Framework] yii中如何不加载layout
  • 原文地址:https://www.cnblogs.com/shangshen/p/3592140.html
Copyright © 2011-2022 走看看