dataset datatable 转json

    class ToJosn

    {

        #region dataTable转换成Json格式

        /// <summary>      

        /// dataTable转换成Json格式      

        /// </summary>      

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

        /// <returns></returns>      

        public static string ToJson(ArrayList aliJson)

        {

            StringBuilder sbuBuilder = new StringBuilder();

            sbuBuilder.Append("{\"Value\":[");

            for (int i = 0; i < aliJson.Count; i++)

            {

                sbuBuilder.Append("\"");

                sbuBuilder.Append(aliJson[i].ToString().Replace("\"", "\\\""));

                sbuBuilder.Append("\",");

            }

            if (aliJson.Count > 0)

            {

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

            }

            sbuBuilder.Append("]}");

            string strJson = sbuBuilder.ToString();

            strJson = strJson.Replace("\n", "<br />");

            strJson = strJson.Replace("\r", "<br />");

            return strJson;//sbuBuilder.ToString();

        }

        public static string ToJson(DataTable dtaJson)

        {

            StringBuilder sbuBuilder = new StringBuilder();

            sbuBuilder.Append("{\"Rows\":[");

            for (int i = 0; i < dtaJson.Rows.Count; i++)

            {

                sbuBuilder.Append("[");

                for (int j = 0; j < dtaJson.Columns.Count; j++)

                {

                    sbuBuilder.Append("\"");

                    sbuBuilder.Append(dtaJson.Rows[i][j].ToString().Replace("\"", "\\\"").Replace("\r\n", "<br>"));

                    sbuBuilder.Append("\",");

                }

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

                sbuBuilder.Append("],");

            }

            if (dtaJson.Rows.Count > 0)

            {

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

            }

            sbuBuilder.Append("]}");



            string strJson = sbuBuilder.ToString();

            strJson = strJson.Replace("\n", "<br />");

            strJson = strJson.Replace("\r", "<br />");



            return strJson;//sbuBuilder.ToString();

        }



        #endregion dataTable转换成Json格式



        #region DataSet转换成Json格式

        /// <summary>      

        /// DataSet转换成Json格式      

        /// </summary>      

        /// <param name="ds">DataSet</param>      

        /// <returns></returns>      

        public static string ToJson(DataSet dseJson)

        {

            StringBuilder sbuBuilder = new StringBuilder();

            sbuBuilder.Append("{\"Tables\":[");

            foreach (DataTable dtJson in dseJson.Tables)

            {

                sbuBuilder.Append(ToJson(dtJson) + ",");

            }

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

            sbuBuilder.Append("]}");



            string strJson = sbuBuilder.ToString();

            strJson = strJson.Replace("\n", "<br />");

            strJson = strJson.Replace("\r", "<br />");

            return strJson;//sbuBuilder.ToString();

        }

        #endregion







        /// <summary>

        /// 带表头的

        /// </summary>

        /// <param name="dtaJson"></param>

        /// <param name="b"></param>

        /// <returns></returns>

        public static string ToJson(DataTable dtaJson, bool b)

        {

            StringBuilder sbuBuilder = new StringBuilder();

            sbuBuilder.Append("{\"Rows\":[");

            for (int i = 0; i < dtaJson.Rows.Count; i++)

            {

                sbuBuilder.Append("{");

                for (int j = 0; j < dtaJson.Columns.Count; j++)

                {



                    sbuBuilder.Append("\"" + dtaJson.Columns[j].ColumnName + "\":");

                    sbuBuilder.Append("\"");

                    sbuBuilder.Append(dtaJson.Rows[i][j].ToString().Replace("\"", "\\\"").Replace("\r\n", "<br>"));

                    sbuBuilder.Append("\",");

                }

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

                sbuBuilder.Append("},");

            }

            if (dtaJson.Rows.Count > 0)

            {

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

            }

            sbuBuilder.Append("]}");



            string strJson = sbuBuilder.ToString();

            strJson = strJson.Replace("\n", "<br />");

            strJson = strJson.Replace("\r", "<br />");



            return strJson;//sbuBuilder.ToString();

        }



        /// <summary>

        /// 带表头的

        /// </summary>

        /// <param name="dseJson"></param>

        /// <returns></returns>

        public static string ToJson(DataSet dseJson, bool b)

        {

            StringBuilder sbuBuilder = new StringBuilder();

            sbuBuilder.Append("{\"Tables\":[");

            foreach (DataTable dtJson in dseJson.Tables)

            {

                sbuBuilder.Append(ToJson(dtJson, true) + ",");

            }

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

            sbuBuilder.Append("]}");





            string strJson = sbuBuilder.ToString();

            strJson = strJson.Replace("\n", "<br />");

            strJson = strJson.Replace("\r", "<br />");

            return strJson;//sbuBuilder.ToString();

        }







        /// <summary>

        /// 将JSON解析成DataSet只限标准的JSON数据

        /// 例如:Json={t1:[{name:'数据name',type:'数据type'}]} 

        /// 或 Json={t1:[{name:'数据name',type:'数据type'}],t2:[{id:'数据id',gx:'数据gx',val:'数据val'}]}

        /// </summary>

        /// <param name="Json">Json字符串</param>

        /// <returns>DataSet</returns>

        public static DataSet JsonToDataSet(string Json)

        {

            try

            {

                DataSet ds = new DataSet();

                JavaScriptSerializer JSS = new JavaScriptSerializer();





                object obj = JSS.DeserializeObject(Json);

                Dictionary<string, object> datajson = (Dictionary<string, object>)obj;





                foreach (var item in datajson)

                {

                    DataTable dt = new DataTable(item.Key);

                    object[] rows = (object[])item.Value;

                    foreach (var row in rows)

                    {

                        Dictionary<string, object> val = (Dictionary<string, object>)row;

                        DataRow dr = dt.NewRow();

                        foreach (KeyValuePair<string, object> sss in val)

                        {

                            if (!dt.Columns.Contains(sss.Key))

                            {

                                dt.Columns.Add(sss.Key.ToString());

                                dr[sss.Key] = sss.Value;

                            }

                            else

                                dr[sss.Key] = sss.Value;

                        }

                        dt.Rows.Add(dr);

                    }

                    ds.Tables.Add(dt);

                }

                return ds;

            }

            catch

            {

                return null;

            }

        }









        /// <summary>

        /// 临时方法 把字典表生成js文件 职位

        /// </summary>

        public static string funTemp(string total)

        {

            DataSet ds = hrSystem.DAL.commd.dalcomd.P_Sys_getTableCoum("zh_Sys_Position", "dictNO,parentNO, Explainss ", "intType", total);

            DataTable dt = ds.Tables[0];

            DataTable CurrDt = dt;

            StringBuilder sbuBuilder = new StringBuilder();

            sbuBuilder.Append("{\"Item\":[");

            for (int i = 0; i < dt.Rows.Count; i++)

            {

                if (dt.Rows[i]["parentNO"] == DBNull.Value)

                {



                    DataRow[] drTemp1 = dt.Select(" parentNO='" + dt.Rows[i]["dictNO"].ToString() + "'");



                    sbuBuilder.Append("[");

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

                    {

                        sbuBuilder.Append("\"");

                        sbuBuilder.Append(dt.Rows[i][j].ToString().Replace("\"", "\\\"").Replace("\r\n", "<br>"));

                        sbuBuilder.Append("\",");

                    }

                    if (dt.Rows[i]["parentNO"] == DBNull.Value)

                    {



                        DataTable dtTemp2 = new DataTable();

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

                        {

                            dtTemp2.Columns.Add("");

                        }

                        foreach (DataRow drTemp in dt.Select(" parentNO='" + dt.Rows[i]["dictNO"].ToString() + "'"))

                        {

                            string[] dtAppend = new string[drTemp.ItemArray.Length];

                            for (int k = 0; k < drTemp.ItemArray.Length; k++)

                            {

                                dtAppend[k] = drTemp.ItemArray[k].ToString();

                            }

                            dtTemp2.Rows.Add(dtAppend);

                        }



                        sbuBuilder.Append(ToJson(dtTemp2) + "}");

                        dtTemp2.Clear();

                    }



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

                    sbuBuilder.Append("],,");



                    if (dt.Rows.Count > 0)

                    {

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

                    }





                }



            }

            sbuBuilder.Append("]},");

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

            return sbuBuilder.ToString();

        }





        /// <summary>

        /// 临时方法 把字典表生成js文件 城市

        /// </summary>

        public static string funTemp1()

        {

            DataSet ds = hrSystem.DAL.commd.dalcomd.P_Sys_getTableCoum("zh_Sys_crty", "intCrtyCode,intParentCrtyCode, strName,intType,strSpell ", "1", "1");

            DataTable dt = ds.Tables[0];

            DataTable CurrDt = dt;

            StringBuilder sbuBuilder = new StringBuilder();

            sbuBuilder.Append("{\"Item\":[");

            for (int i = 0; i < dt.Rows.Count; i++)

            {

                if (dt.Rows[i]["intParentCrtyCode"].ToString() == "-1")

                {



                    DataRow[] drTemp1 = dt.Select(" intParentCrtyCode='" + dt.Rows[i]["intCrtyCode"].ToString() + "'");



                    sbuBuilder.Append("[");

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

                    {

                        sbuBuilder.Append("\"");

                        sbuBuilder.Append(dt.Rows[i][j].ToString().Replace("\"", "\\\"").Replace("\r\n", "<br>"));

                        sbuBuilder.Append("\",");

                    }

                    if (dt.Rows[i]["intParentCrtyCode"].ToString() == "-1")

                    {



                        DataTable dtTemp2 = new DataTable();

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

                        {

                            dtTemp2.Columns.Add("");

                        }

                        foreach (DataRow drTemp in dt.Select(" intParentCrtyCode='" + dt.Rows[i]["intCrtyCode"].ToString() + "'"))

                        {

                            string[] dtAppend = new string[drTemp.ItemArray.Length];

                            for (int k = 0; k < drTemp.ItemArray.Length; k++)

                            {

                                dtAppend[k] = drTemp.ItemArray[k].ToString();

                            }

                            dtTemp2.Rows.Add(dtAppend);

                        }



                        sbuBuilder.Append(ToJson(dtTemp2) + "}");

                        dtTemp2.Clear();

                    }



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

                    sbuBuilder.Append("],,");



                    if (dt.Rows.Count > 0)

                    {

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

                    }





                }



            }

            sbuBuilder.Append("]},");

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

            return sbuBuilder.ToString();

        }

    }

 

你可能感兴趣的:(Datatable)