• 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 '\b':
    sb.Append("\\b"); break;
    case '\f':
    sb.Append("\\f"); break;
    case '\n':
    sb.Append("\\n"); break;
    case '\r':
    sb.Append("\\r"); break;
    case '\t':
    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 }
    }

最新文章

  1. C#中(int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别 &lt;转&gt;
  2. Multiples of 3 and 5
  3. 【转】如何判断Javascript对象是否存在
  4. Linux Shell之top命令
  5. 【转载】Apache Kafka监控之Kafka Web Console
  6. Security log is full,only administrator can log on to fix the problem(安全日志满了)
  7. python3 pyqt5 和eric5配置教程
  8. bzoj3503
  9. OllyDBG V1.10聆风听雨汉化版
  10. 转载 Deep learning:六(regularized logistic回归练习)
  11. CJOJ 2040 【一本通】分组背包(动态规划)
  12. mitm6:通过IPv6攻破IPv4网络
  13. VC常用小知识
  14. anguar6中 无法在Element上找到属性 (eg 原DOM的offsetTop)
  15. 用Python的导入csv、文本文件、Excel文件的数据
  16. Java - 27 Java 集合框架
  17. Java基本语法之动手动脑
  18. log4j的详细配置(最省心完美配置)
  19. 第2章 Python基础-字符编码&amp;数据类型 列表&amp;元祖 练习题
  20. hadoop学习---运行第一个hadoop实例

热门文章

  1. HTTP Methods: GET vs. POST
  2. wireshark初学者使用
  3. uva10002凸包重心
  4. jQuery-瀑布流的取巧做法分享
  5. iptables详解(10):iptables自定义链
  6. vue本地项目静态资源管理
  7. webstrom 配置eslint 自动修复错误
  8. java程序设计基础篇 复习笔记 第二单元
  9. 【LeetCode-128】Longest Consecutive Sequence
  10. bzoj1269