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数据的更多相关文章

  1. AJAX提交到Handler.ashx一般处理程序返回json数据 (字符串拼接方式)

    <%@ WebHandler Language="C#" Class="Handler" %> using System; using System ...

  2. AJAX提交到Handler.ashx一般处理程序返回json数据-转

    直接贴代码!我也测试通过! 一切看注释! 谢谢! <%@ WebHandler Language="C#" class="Handler" %> u ...

  3. ashx文件结合ajax使用(返回json数据)

    ashx文件返回json数据: public void ProcessRequest(HttpContext context) { context.Response.ContentType = &qu ...

  4. 用ajax获取后台数据,返回json数据,怎么在前台使用?

    用ajax获取后台数据,返回json数据,怎么在前台使用呢?后台 C# code   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (dataType == &qu ...

  5. Web API返回JSON数据

    对Web API新手来说,不要忽略了ApiController 在web API中,方法的返回值如果是实体的话实际上是自动返回JSON数据的例如: 他的返回值就是这样的: { "Conten ...

  6. Spring MVC 4.1.4 RESTFUL风格返回JSON数据406错误处理

    Spring MVC 4.1.4 RESTFUL风格返回JSON数据406错误处理 今天在使用spring4.1.4,使用ResponseBody注解返回JSON格式的数据的时候遇到406错误. 解决 ...

  7. 深入了解Struts2返回JSON数据的原理

    首先来看一下JSON官方对于"JSON"的解释: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析 ...

  8. SpringMVC——返回JSON数据&&文件上传下载

    --------------------------------------------返回JSON数据------------------------------------------------ ...

  9. 如何在Crystal Portlet中正确返回JSON数据给AJAX请求?

    当Crystal Portlet中需要采用Ajax请求,并让后台返回Json数据时,如何才能正确.方便的返回Json数据呢? 以下两种方法均可: 方法一:Ajax请求时,采用RenderURL,对应P ...

随机推荐

  1. 如何彻底杀掉Oracle相关用户的会话

    在ORACLE数据库当中,有时候会使用ALTER SYSTEM KILL SESSION 'sid,serial#'杀掉一个会话进程,但是使用这个SQL语句杀掉会话后,数据库并不会立即释放掉相关的资源 ...

  2. Docker笔记4:在 CentOS 上安装 Docker

    Docker 是一个开源的应用容器引擎,主要有两个分支,一个是社区免费版(Docker CE),一个是企业版(Docker EE). 第1步:系统环境要求 Docker 支持的 CentOS 版本: ...

  3. 转一个veth的文章

    这篇写的很好,清晰明白,保存一下https://www.cnblogs.com/bakari/p/10613710.html

  4. Windows下的git服务器搭建

    时间一晃又是两个月过去了,我好像在写博客这方面有点懒,= .= 主要也是没啥好写的,项目上的事情又不能写,能写的东西实在太少. 前两个月领导花巨资申请了一个服务器,让我搞git服务器来管理代码,花了几 ...

  5. 用算法去扫雷(go语言)

    最初的准备 首先得完成数据的录入,及从扫雷的程序读取界面数据成为我的算法可识别的数据 其次是设计扫雷的算法,及如何才能判断格子是雷或者可以点击鼠标左键和中键. 然后将步骤2的到的结果通过我的程序实现鼠 ...

  6. 什么是 C 和 C ++ 标准库?学编程的你应该知道这些知识!

    简要介绍编写C/C ++应用程序的领域,标准库的作用以及它是如何在各种操作系统中实现的. 我已经接触C++一段时间了,一开始就让我感到疑惑的是其内部结构:我所使用的内核函数和类从何而来? 谁发明了它们 ...

  7. nginx集群:nginx配置负载均衡集群(nginx1.18.0)

    一,nginx的负载均衡集群的特点: 1,nginx集群和lvs的不同? lvs集群:工作在第4层(传输层) nginx集群:工作在第7层(应用层) lvs集群:性能更强 nginx集群:功能更强:可 ...

  8. scrapy数据写入管道

    1 setting里面启动管道 ITEM_PIPELINES = { 'ganji.pipelines.GanjiPipeline': 300,}2 拿到的数据通过yield返回给管道 # -*- c ...

  9. faker切换user-agent

    import random import requests url = "http://tool.yeves.cn" import faker fake = faker.Faker ...

  10. 后羿:我射箭了快上—用MotionLayout实现王者荣耀团战

    前言 昨晚跟往常一样,饭后开了一局王者荣耀,前中期基本焦灼,到了后期一波决定胜负的时候,我果断射箭,射中对面,配合队友直接秒杀,打赢团战一波推完基地.那叫一个精彩,队友都发出了666666的称赞,我酷 ...