ashx将datatable返回json数据

2021-05-14 10:28

阅读:306

标签:返回   res   ToJson   reg   and   new   情况下   col   add   

1.直接使用JsonConvert.SerializeObject()。将datatable放入  输出字符串

下面是测试:用webform+ashx作为接口。

public class GetJson : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/json";
var str = DataTableToJsonWithJsonNet(GetDt());
context.Response.Write(str);
//context.Response.Write(GetDt());
}

#region 构造datatable
public static DataTable GetDt()
{
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
dt.Columns.Add("Age");
dt.Columns.Add("Birth");
dt.Rows.Add(1,"张三",22,"1993-12-4");
dt.Rows.Add(1, "李四", 23, "1992-12-4");
dt.Rows.Add(1, "王五", 21, "1996-12-4");
dt.Rows.Add(1, "赵六", 23, "1997-12-4");
dt.Rows.Add(1, "马七", 20, "1991-12-4");
return dt;
}
#endregion

#region 根据datatable返回json
public static string DataTableToJsonWithJsonNet(DataTable table)
{
string jsonString = string.Empty;
jsonString = JsonConvert.SerializeObject(table);
return jsonString;
}
#endregion

public bool IsReusable
{
get
{
return false;
}
}
}

经过测试输出到前台的最终是一个数组。

技术图片

2.datatable拼接到对象中,再返回

同样情况下,假如我们不转换为json字符串,直接使用datatable输出到前台,经过测试前台什么都接收不到。

假如想把datatable作为一个数组拼接到一个对象中在返回前台,此时应该用JObject和Jarry。

public class GetJson : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/json";
var str = DataTableToJsonWithJsonNet(GetDt());
context.Response.Write(str);
}

#region 构造datatable
public static DataTable GetDt()
{
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
dt.Columns.Add("Age");
dt.Columns.Add("Birth");
dt.Rows.Add(1,"张三",22,"1993-12-4");
dt.Rows.Add(1, "李四", 23, "1992-12-4");
dt.Rows.Add(1, "王五", 21, "1996-12-4");
dt.Rows.Add(1, "赵六", 23, "1997-12-4");
dt.Rows.Add(1, "马七", 20, "1991-12-4");
return dt;
}
#endregion

#region 根据datatable返回json
public static JObject DataTableToJsonWithJsonNet(DataTable table)
{
JObject job;
JArray jar = JArray.FromObject(GetDt());
job = new JObject { {"code",0 },{ "msg","查询成功"},{ "state",true},{ "data",jar} };
return job;
}
#endregion

public bool IsReusable
{
get
{
return false;
}
}
}

可以看到前台接收到对象了

技术图片

 3.假如后台是一个list,返回方法一样,只需要将JArry.formobject();

传入的对象改为list就可以

 

ashx将datatable返回json数据

标签:返回   res   ToJson   reg   and   new   情况下   col   add   

原文地址:https://www.cnblogs.com/yagamilight/p/11990794.html


评论


亲,登录后才可以留言!