c# 任意类型转换成json (datable,list,array 等)

来源:互联网 发布:js中用radio做单选题 编辑:程序博客网 时间:2024/06/05 20:43

 /// <summary>

    /// List转成json

    /// </summary>

    /// <typeparam name="T"></typeparam>

    /// <param name="jsonName"></param>

    /// <param name="list"></param>

    /// <returns></returns>

    public static string ListToJson<T>(IList<Tliststring 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.Counti++)

            {

                T obj = Activator.CreateInstance<T>();

                PropertyInfo[] pi = obj.GetType().GetProperties();

                Json.Append("{");

                for (int j = 0; j < pi.Lengthj++)

                {

                    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();

    }

 

    /// <summary>

    /// List转成json

    /// </summary>

    /// <typeparam name="T"></typeparam>

    /// <param name="list"></param>

    /// <returns></returns>

    public static string ListToJson<T>(IList<Tlist)

    {

        object obj = list[0];

        return ListToJson<T>(listobj.GetType().Name);

    }

 

    /// <summary>

    /// 对象转换为Json字符串

    /// </summary>

    /// <param name="jsonObject">对象</param>

    /// <returns>Json字符串</returns>

    public static string ToJson(object jsonObject)

    {

        try

        {

            StringBuilder jsonString = new StringBuilder();

            jsonString.Append("{");

            PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties();

            for (int i = 0; i < propertyInfo.Lengthi++)

            {

                object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObjectnull);

                if (objectValue == null)

                {

                    continue;

                }

                StringBuilder value = new StringBuilder();

                if (objectValue is DateTime || objectValue is Guid || objectValue is TimeSpan)

                {

                    value.Append("/"" + objectValue.ToString() + "/"");

                }

                else if (objectValue is string)

                {

                    value.Append("/"" + objectValue.ToString() + "/"");

                }

                else if (objectValue is IEnumerable)

                {

                    value.Append(ToJson((IEnumerable)objectValue));

                }

                else

                {

                    value.Append("/"" + objectValue.ToString() + "/"");

                }

                jsonString.Append("/"" + propertyInfo[i].Name + "/":" + value + ","); ;

            }

            return jsonString.ToString().TrimEnd(',') + "}";

        }

        catch (Exception ex)

        {

            throw ex;

        }

    }

 

    /// <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.Remove(jsonString.Length - 1, jsonString.Length);

        return jsonString + "]";

    }

 

    /// <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 + "]";

    }

 

    /// <summary>

    /// Datatable转换为Json

    /// </summary>

    /// <param name="table">Datatable对象</param>

    /// <returns>Json字符串</returns>

    public static string ToJson(DataTable dt)

    {

        StringBuilder jsonString = new StringBuilder();

        jsonString.Append("[");

        DataRowCollection drc = dt.Rows;

        for (int i = 0; i < drc.Counti++)

        {

            jsonString.Append("{");

            for (int j = 0; j < dt.Columns.Countj++)

            {

                string strKey = dt.Columns[j].ColumnName;

                string strValue = drc[i][j].ToString();

                Type type = dt.Columns[j].DataType;

                jsonString.Append("/"" + strKey + "/":");

                strValue = StringFormat(strValuetype);

                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();

    }

 

    /// <summary>

    /// DataTable转成Json

    /// </summary>

    /// <param name="jsonName"></param>

    /// <param name="dt"></param>

    /// <returns></returns>

    public static string ToJson(DataTable dtstring 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.Counti++)

            {

                Json.Append("{");

                for (int j = 0; j < dt.Columns.Countj++)

                {

                    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();

    }

 

    /// <summary>

    /// DataReader转换为Json

    /// </summary>

    /// <param name="dataReader">DataReader对象</param>

    /// <returns>Json字符串</returns>

    public static string ToJson(IDataReader dataReader)

    {

        StringBuilder jsonString = new StringBuilder();

        jsonString.Append("[");

 

        while (dataReader.Read())

        {

            jsonString.Append("{");

            for (int i = 0; i < dataReader.FieldCounti++)

            {

                Type type = dataReader.GetFieldType(i);

                string strKey = dataReader.GetName(i);

                string strValue = dataReader[i].ToString();

                jsonString.Append("/"" + strKey + "/":");

                strValue = StringFormat(strValuetype);

                if (i < dataReader.FieldCount - 1)

                {

                    jsonString.Append(strValue + ",");

                }

                else

                {

                    jsonString.Append(strValue);

                }

            }

            jsonString.Append("},");

        }

        dataReader.Close();

        jsonString.Remove(jsonString.Length - 1, 1);

        jsonString.Append("]");

        if (jsonString.Length == 1)

        {

            return "[]";

        }

        return jsonString.ToString();

    }

 

    /// <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 + "}";

    }

 

    /// <summary>

    /// 过滤特殊字符

    /// </summary>

    /// <param name="s"></param>

    /// <returns></returns>

    private static string String2Json(String s)

    {

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < s.Lengthi++)

        {

            char c = s.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();

    }

 

    /// <summary>

    /// 格式化字符型、日期型、布尔型

    /// </summary>

    /// <param name="str"></param>

    /// <param name="type"></param>

    /// <returns></returns>

    private static string StringFormat(string strType type)

    {

        if (type != typeof(string) && string.IsNullOrEmpty(str))

        {

            str = "/"" + str + "/"";

        }

        else if (type == typeof(string))

        {

            str = String2Json(str);

            str = "/"" + str + "/"";

        }

        else if (type == typeof(DateTime))

        {

            str = "/"" + str.Split(' ')[0] + "/"";

        }

        else if (type == typeof(bool))

        {

            str = str.ToLower();

        }

 

        return str;

    }

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 对方电话拉黑我怎么办 手机号码换了淘宝账号怎么办 扣扣号有密码无法加好友怎么办 扣扣帐号忘记了怎么办 扣扣帐号被冻结怎么办 xp忘了开机密码怎么办 手机怎样知道好友qq密码怎么办 找回微信密码申诉失败怎么办 若微信号被盗钱怎么办 微信号被倒了怎么办 微信支付密码忘了怎么办 微信钱包密码忘了怎么办 忘记qq锁屏密码怎么办 微信里保密柜密码忘记了怎么办 qq漫游记录密码忘了怎么办 当你很烦的时候怎么办 当你烦的时候怎么办 面对刁蛮不讲理的老婆怎么办 老是想以前的事怎么办 被心机婊陷害了怎么办 分手了还被骚扰怎么办 苹果手机屏幕出现冷暖屏怎么办 我感觉媳妇不漂亮怎么办 90后赚不到钱怎么办 处对象感觉好累怎么办 谈朋友感觉好累怎么办 家庭条件不好娶老婆难办怎么办? 异地恋闹矛盾了怎么办 有人威胁要杀我全家怎么办 分手了借我的钱怎么办 脸打架打肿了怎么办 人家不加我qq好友怎么办 一个好友被删了怎么办 dnf脸黑怎么办还有办法 我想登别人微信怎么办 昌硕工资没到怎么办 昌硕离职不批怎么办 昌硕工资不到卡怎么办 上海人去苏州工作社保怎么办 娶个个脾气暴躁的媳妇怎么办 满脸的黑头痘痘怎么办