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

  • 相关阅读:
    database backup scripts
    RMAN笔记之备份集和备份片
    数据缓冲区详解
    Oracle数据库中快照的使用
    linux 安装RabbitMQ 注意版本
    转 Oracle12c/11个 Client安装出现"[INS-30131]"错误“请确保当前用户具有访问临时位置所需的权限”解决办法之完整版
    Oracle alert日志中出现:‘Fatal NI connect error 12170’
    Oracle表分区分为四种:范围分区,散列分区,列表分区和复合分区
    python基础: String类型
    Python3 urllib模块的使用(转载)
  • 原文地址:https://www.cnblogs.com/yagamilight/p/11990794.html
Copyright © 2020-2023  润新知