ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Json轉換(三)

Json轉換(三)

原创 Linux操作系统 作者:CodeAgriculture 时间:2013-04-26 15:52:28 0 删除 编辑
   ///
        /// 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博客 ” ,链接:https://blog.itpub.net/28699126/viewspace-759365/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Json轉換(二)
下一篇: 优秀站点
请登录后发表评论 登录
全部评论

注册时间:2013-03-07

  • 博文量
    54
  • 访问量
    435952