C# C数据表到Json?

C# C数据表到Json?,c#,json,datatable,C#,Json,Datatable,我希望将DataTable作为Json格式显示在图表上 public JsonResult GetDataTable() { DataTable dt = new DataTable(); dt.Columns.Add("Jan"); dt.Columns.Add("Feb"); dt.Columns.Add("Mar"); dt.Columns.Add("Apr"); for (int i = 0; i < 10; i++) {

我希望将DataTable作为Json格式显示在图表上

public JsonResult GetDataTable()
{
    DataTable dt = new DataTable();

    dt.Columns.Add("Jan");
    dt.Columns.Add("Feb");
    dt.Columns.Add("Mar");
    dt.Columns.Add("Apr");

    for (int i = 0; i < 10; i++)
    {
        dt.Rows.Add(i * 5, i * 10, i * 15, i * 11);
    }

    // JsonDataTable = dt to Json

    return new JsonResult
    {
        Data = new
        {
            success = true,
                chartData = JsonDataTable 
        },
        JsonRequestBehavior = JsonRequestBehavior.AllowGet
    };
}
如何将DataTable转换为Json

谢谢。

在数据表上应用AsEnumerable方法,然后在该数据表上应用一些LINQ以获得所需的形式

var thatList=(from p in dt.AsEnumerable() 
                 select new { 
                               Jan= p.Field<string>("Jan"),
                               Feb = p.Field<string>("Feb"),
                               Mar = p.Field<string>("Mar"),
                               Apr = p.Field<string>("Apr")
                            }).ToList();
对数据表应用AsEnumerable方法,然后对其应用一些LINQ,以获得所需的形式

var thatList=(from p in dt.AsEnumerable() 
                 select new { 
                               Jan= p.Field<string>("Jan"),
                               Feb = p.Field<string>("Feb"),
                               Mar = p.Field<string>("Mar"),
                               Apr = p.Field<string>("Apr")
                            }).ToList();

您可以使用它在许多其他类型中自动序列化数据表!到JSON。

您可以使用它在许多其他类型中自动序列化数据表!到JSON。

为什么不试试这样的方法:

public static class JSONEncoderHelper
{
    public static string FromXML(DataTable table)
    {
        StringBuilder sbuilder = new StringBuilder();

        sbuilder.Append("{\"");
        sbuilder.Append(table.TableName);
        sbuilder.Append("\":[");

        bool first = true;
        foreach (DataRow drow in table.Rows)
        {
            if (first)
            {
                sbuilder.Append("{");
                first = false;
            }
            else
                sbuilder.Append(",{");

            bool firstColumn = true;
            foreach (DataColumn column in table.Columns)
            {
                if (firstColumn)
                {
                    sbuilder.Append(string.Format("\"{0}\":\"{1}\"", column.ColumnName, drow[column].ToString()));
                    firstColumn = false;
                }
                else
                sbuilder.Append(string.Format(",\"{0}\":\"{1}\"", column.ColumnName, drow[column].ToString()));
            }
            sbuilder.Append("}");
        }

        sbuilder.Append("]}");

        return sbuilder.ToString();
    }
}
你现在要做的就是重构我在2分钟内完成的helper类


你为什么不试试这样的东西呢:

public static class JSONEncoderHelper
{
    public static string FromXML(DataTable table)
    {
        StringBuilder sbuilder = new StringBuilder();

        sbuilder.Append("{\"");
        sbuilder.Append(table.TableName);
        sbuilder.Append("\":[");

        bool first = true;
        foreach (DataRow drow in table.Rows)
        {
            if (first)
            {
                sbuilder.Append("{");
                first = false;
            }
            else
                sbuilder.Append(",{");

            bool firstColumn = true;
            foreach (DataColumn column in table.Columns)
            {
                if (firstColumn)
                {
                    sbuilder.Append(string.Format("\"{0}\":\"{1}\"", column.ColumnName, drow[column].ToString()));
                    firstColumn = false;
                }
                else
                sbuilder.Append(string.Format(",\"{0}\":\"{1}\"", column.ColumnName, drow[column].ToString()));
            }
            sbuilder.Append("}");
        }

        sbuilder.Append("]}");

        return sbuilder.ToString();
    }
}
你现在要做的就是重构我在2分钟内完成的helper类


基本上,您可以忘记.NET Fx中内置的关于JSON的任何内容,您会感觉非常好。JSON.NET工作正常,令人难以置信。自从我使用JSON.NET以来,我省下了这么多的麻烦:你基本上可以忘记.NET Fx中内置的关于JSON的任何东西,你会感觉非常好。JSON.NET工作正常,令人难以置信。自从我使用JSON.NET以来,已经节省了这么多的头发:可能重复的