zoukankan      html  css  js  c++  java
  • ashx将datatable返回json数据

    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就可以

  • 相关阅读:
    Linux(8)查看服务器系统信息
    Scrapy爬取西刺代理ip流程
    Scrapy提取多个标签的text
    Scrapy常用命令行工具
    暴力&打表
    博客试水
    Linux --远程访问控制
    php--最新正则(手机号码)
    MySQLdump常用命令
    关于XSS攻击
  • 原文地址:https://www.cnblogs.com/yagamilight/p/11990794.html
Copyright © 2011-2022 走看看