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

  • 相关阅读:
    经典SQL语句大全
    SQL中With AS
    SQL Server 2008 r2 安装过程图解
    TFS2010中如何添加用户
    SQL中标准函数范例
    关闭子窗体时刷新父窗体
    sharepoint网站备份和还原
    LogHelper类
    TFS2010用户解锁
    ADHelper类
  • 原文地址:https://www.cnblogs.com/yagamilight/p/11990794.html
Copyright © 2020-2023  润新知