Json轉換(三)

CodeAgriculture發表於2013-04-26
   ///
        /// Datatable轉換為Json   
        ///

        /// DataTable
        /// total的值
        /// json的名稱
        /// json字串
        public static string DataTableToJson(DataTable dt, int rowCount, string jsonName)
        {
            StringBuilder jsonString = new StringBuilder();
            if (string.IsNullOrEmpty(jsonName))
            {
                jsonName = "rows";
            }
            jsonString.Append("{\"total\":" + rowCount + ",\"" + jsonName + "\":[");
            DataRowCollection drc = dt.Rows;
            if (drc.Count > 0)
            {
                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("},");
                }
            }
            else
            {
                jsonString.Append("{");
            }
            jsonString.Remove(jsonString.Length - 1, 1);
            jsonString.Append("]}");
            return jsonString.ToString();
        }

        ///
        /// Datatable轉換為樹狀Json   
        ///

        /// json字串
        public static string DataTableToTreeJson(DataTable dt)
        {
            bool flag = false;
            StringBuilder jsonString = new StringBuilder();
            jsonString.Append("[");
            DataRowCollection drc = dt.Rows;
            if (drc.Count > 0)
            {
                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);
                        }
                    }
                    if (i + 1 < drc.Count)
                    {
                        if (drc[i + 1][0].ToString() == "1" && flag == true)
                        {
                            jsonString.Append("}]},");
                            flag = false;
                        }
                        else if (drc[i + 1][0].ToString() == "1" && flag == false)
                        {
                            jsonString.Append(",\"children\":[]},");
                        }
                        else
                        {
                            if (drc[i + 1][0].ToString() != drc[i][0].ToString())
                                jsonString.Append(",\"state\":\"closed\",\"children\":[");
                            else
                                jsonString.Append("},");
                            flag = true;
                        }
                    }
                    else
                    {
                        if (flag == true)
                            jsonString.Append("}]},");
                        else
                            jsonString.Append(",\"children\":[]},");
                    }
                }
            }
            else
            {
                jsonString.Append("{");
            }
            jsonString.Remove(jsonString.Length - 1, 1);
            jsonString.Append("]");
            return jsonString.ToString();
        }
注:Json轉換(一二三)位於同一個Static類中

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28699126/viewspace-759365/,如需轉載,請註明出處,否則將追究法律責任。

相關文章