ASP.NET中如何使用DataTable构建Json字符串?

ASP.NET中,可以使用DataTable的GetJson方法将DataTable对象转换为JSON字符串。

ASP.NET中,使用DataTable构造JSON字符串是一个常见的需求,特别是在需要将数据从服务器端传输到客户端进行展示或处理时,以下是几种常用的方法来实现这一功能:

aspnet使用DataTable构造Json字符串的方法

1、使用Newtonsoft.Json库

引入命名空间:首先需要在项目中引入Newtonsoft.Json库,如果是VS2015 ASP.NET应用程序,默认有此引用;如果是VS2013则需要手动添加Newtonsoft.Json.dll,在代码文件的开头添加using Newtonsoft.Json;语句。

转换方法:创建一个DataTable对象并填充数据后,使用JsonConvert.SerializeObject方法将DataTable转换为JSON字符串。

    DataTable dt = new DataTable("MyTable");
    dt.Columns.Add("Name", typeof(string));
    dt.Columns.Add("Age", typeof(int));
    dt.Rows.Add("Alice", 25);
    dt.Rows.Add("Bob", 30);
    string jsonString = JsonConvert.SerializeObject(dt, Formatting.Indented);
    Console.WriteLine(jsonString);

上述代码中,Formatting.Indented参数使生成的JSON字符串具有缩进,便于查看。

2、使用System.Text.Json库(适用于.NET Core及更高版本)

aspnet使用DataTable构造Json字符串的方法

引入命名空间:确保已经添加了System.Text.Json命名空间,在代码文件的开头添加using System.Text.Json;语句。

转换方法:同样先创建并填充DataTable对象,然后使用JsonSerializer.Serialize方法将DataTable转换为JSON字符串。

    DataTable dataTable = new DataTable("Employees");
    dataTable.Columns.Add("Id", typeof(int));
    dataTable.Columns.Add("Name", typeof(string));
    dataTable.Rows.Add(1, "John Doe");
    dataTable.Rows.Add(2, "Jane Smith");
    string json = JsonSerializer.Serialize(dataTable);
    Console.WriteLine(json);

这种方法简洁高效,是.NET Core及更高版本推荐的方式。

3、使用JavaScriptSerializer类(适用于较老版本的.NET Framework)

引入命名空间:需要添加System.Web.Script.Serialization命名空间,在代码文件的开头添加using System.Web.Script.Serialization;语句。

aspnet使用DataTable构造Json字符串的方法

转换方法:先将DataTable转换为字典列表,再使用JavaScriptSerializer类的Serialize方法将字典列表转换为JSON字符串。

    public string DataTableToJsonWithJavaScriptSerializer(DataTable table)
    {
        JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
        List<Dictionary<string, object>> parentRow = new List<Dictionary<string, object>>();
        foreach (DataRow row in table.Rows)
        {
            Dictionary<string, object> childRow = new Dictionary<string, object>();
            foreach (DataColumn col in table.Columns)
            {
                childRow.Add(col.ColumnName, row[col]);
            }
            parentRow.Add(childRow);
        }
        return jsSerializer.Serialize(parentRow);
    }

然后可以这样调用该方法:

    DataTable dt = new DataTable("Test");
    dt.Columns.Add("Column1");
    dt.Columns.Add("Column2");
    dt.Rows.Add("Value1", "Value2");
    string json = DataTableToJsonWithJavaScriptSerializer(dt);
    Console.WriteLine(json);

这种方法相对复杂一些,但在一些特定的老版本项目中可能会用到。

三种方法各有优缺点,开发者可以根据项目的具体需求和环境选择合适的方法来将DataTable转换为JSON字符串。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1619735.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希
上一篇 2025-03-07 16:43
下一篇 2025-03-07 16:43

相关推荐

  • controller接口返回json数据库

    “json,{, “status”: “success”,, “data”: {, “id”: 1,, “name”: “John Doe”,, “email”: “john.doe@example.com”, },},“

    2025-03-16
    05
  • controller取json数据库

    Controller 可以通过数据库查询语句或ORM框架方法来获取 JSON 格式的数据。

    2025-03-16
    00
  • controller json

    “json,{, “controller”: {, “name”: “MainController”,, “actions”: [“index”, “show”, “create”, “update”, “destroy”],, “routes”: {, “index”: “/”,, “show”: “/:id”,, “create”: “/new”,, “update”: “/:id/edit”,, “destroy”: “/:id/delete”, }, },},“

    2025-03-16
    012
  • 如何计算ASP.NET页面执行时间?

    在ASP.NET中,可以通过在页面的代码中记录开始和结束时间来计算每个页面的执行时间。

    2025-03-09
    016

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入