• .NET DataTable转换为JSON格式的字符串


    在进行数据传递的时候,有时我们需要通过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("}");
            }
  • 相关阅读:
    codeforces 707D-(DFS+bitset)
    codeforces Educational Codeforces Round 16-E(DP)
    codeforces 597C (树状数组+DP)
    codeforces #round363 div2.C-Vacations (DP)
    Codeforces Round #365 (Div. 2)-D Mishka and Interesting sum(树状数组)
    codeforces round367 div2.C (DP)
    June Challenge 2018 Division 2
    Codeforces Round #487 (Div. 2)
    Educational Codeforces Round 45 (Rated for Div. 2)
    [Offer收割]编程练习赛63
  • 原文地址:https://www.cnblogs.com/Shang0109/p/3193766.html
Copyright © 2020-2023  润新知