. NET DataTable 을 JSON 형식 으로 변환 하 는 문자열

9463 단어 Datatable
데이터 전달 을 할 때 우 리 는 Ajax 방식 이나 다른 방식 으로 데이터 목록 을 전달 해 야 할 때 가 있 습 니 다. DataTable 이나 다른 형식의 데이터 목록 을 JSON 형식 으로 바 꾸 고 Ajax 실체의 형식 으로 전달 할 수 있 습 니 다.
예 를 들 면:
/// <summary>
        /// DataTable    Json 
        /// </summary>
        /// <param name="dt">datatable</param>
        /// <returns></returns>
        public string DataTableToJson(DataTable dt)
        {
            //
            if (dt == null || dt.Rows.Count<=0) return "{}";

            string columnFirst = "";
            List<string> result = new List<string>();
            StringBuilder Json = new StringBuilder();
            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    if (columnFirst != dt.Rows[i][0].ToString())
                    {
                        if (i != 0)
                        {
                            AddNewJson(Json, result, dt);
                        }
                        columnFirst = dt.Rows[i][0].ToString();
                        result = new List<string>();
                        for (int k = 0; k < dt.Columns.Count; k++)
                        {
                            result.Add("\"" + dt.Rows[i][k].ToString() + "\"");
                        }
                    }
                    else
                    {
                        for (int k = 0; k < dt.Columns.Count; k++)
                        {
                            if (!result[k].Contains(dt.Rows[i][k].ToString()))
                            {
                                result[k] += ",\"" + dt.Rows[i][k].ToString() + "\"";
                            }
                        }
                    }
                    if (i == dt.Rows.Count - 1)
                    {
                        AddNewJson(Json, result, dt);
                    }
                }
            }
            return Json.ToString();
        }

        /// <summary>
        ///     Json 
        /// </summary>
        /// <param name="Json"></param>
        /// <param name="result"></param>
        /// <param name="dt"></param>
        private void AddNewJson(StringBuilder Json, List<string> result, DataTable dt)
        {
            Json.Append("{");
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                Json.Append("\"");
                Json.Append(dt.Columns[i].ColumnName);
                Json.Append("\":");
                if (result[i].Contains(","))
                {
                    Json.Append("[");
                    Json.Append(result[i]);
                    if (i == dt.Columns.Count - 1)
                    {
                        Json.Append("]");
                    }
                    else
                    {
                        Json.Append("],");
                    }
                }
                else
                {
                    Json.Append(result[i]);
                    if (i != dt.Columns.Count - 1)
                    {
                        Json.Append(",");
                    }
                }
            }
            Json.Append("}");
        }

좋은 웹페이지 즐겨찾기