• Jquery解析json数据


    本文在csdn我的个人博客中同样有介绍。

    最近被jquery折磨了一番,倒腾了一个jquery解析json的demo,本demo想实现从asp.net后台实例化dataSet或者dataTable数据集,将dataSet转换成json并返回给客户端,客户端用jquery getJson方法解析出来并显示在页面上。

    首先简单介绍一下getJson方法

    Jquery.getJson(url,[data],[callback])

    url:发送请求地址。

    data:待发送 Key/value 参数。

    callback:载入成功时回调函数。

    下面是实战getJson方法

    首先 创建一个辅助类,用于将dataset数据集转换成json字符串 

    View Code
    public static string DataTableToJson(string jsonName, DataTable dt)
    {
    StringBuilder Json = new StringBuilder();
    Json.Append("{\"" + jsonName + "\":[");
    if (dt.Rows.Count > 0)
    {
    for (int i = 0; i < dt.Rows.Count; i++)
    {
    Json.Append("{");
    for (int j = 0; j < dt.Columns.Count; j++)
    {
    Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":\"" + dt.Rows[i][j].ToString() + "\"");
    if (j < dt.Columns.Count - 1)
    {
    Json.Append(",");
    }
    }
    Json.Append("}");
    if (i < dt.Rows.Count - 1)
    {
    Json.Append(",");
    }
    }
    }
    Json.Append("]}");
    return Json.ToString();
    }



    以上是msdn上的一个辅助类方法。

    第二步 手动配置创建一个演示Dataset,项目中就不能这样了。

    View Code
     1 public static DataSet BindData()
    2 {
    3 DataTable dtData = new DataTable();
    4 dtData.Columns.Add("id");
    5 dtData.Columns.Add("name");
    6 dtData.Columns.Add("sex");
    7 DataRow drData;
    8 drData = dtData.NewRow();
    9 drData[0] = 16;
    10 drData[1] = "zhaoliu";
    11 drData[2] = "man";
    12 dtData.Rows.Add(drData);
    13 drData = dtData.NewRow();
    14 drData[0] = 19;
    15 drData[1] = "zhangsan";
    16 drData[2] = "women";
    17 dtData.Rows.Add(drData);
    18 DataSet ds = new DataSet();
    19 ds.Tables.Add(dtData);
    20 return ds;
    21 }



    第三步 创建aspx页面

    前台页面:两个button,一个单击开始解析json数据,另外一个查看json字符串

    View Code
     1 <head runat="server">
    2 <title></title>
    3 <script language="javascript" type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
    4 <script language="javascript" type="text/javascript">
    5 $(function () {
    6 $("#btn").click(function () {
    7 $.getJSON("GetJsonDemo.aspx", { Action: "action" },
    8 function (data) {
    9 var txt = "";
    10 $.each(data, function (k, v) { $.each(v, function (m, n) { txt += "id :"+n.id + ";name :" + n.name + ";sex :"+n.sex+"<br/>" }); });
    11 $("#txt").html(txt);
    12 });
    13
    14 });
    15 });
    16
    17 $(function () {
    18 $("#btn2").click(function () {
    19 $.get("GetJsonDemo.aspx", { Action: "action" },
    20 function (data) { $("#txt2").text(data); });
    21 });
    22
    23 });
    24 </script>
    25 </head>
    26 <body>
    27 <form id="form1" runat="server">
    28 <div>
    29 <input id="btn" type="button" value="paser json" /><br />
    30 <input id="btn2" type="button" value="watch json string" /><br />
    31 <label id="txt"></label><br />
    32 <label id="txt2"></label>
    33 </div>
    34 </form>
    35 </body>

    后台代码:

    View Code
     1 protected void Page_Load(object sender, EventArgs e)
    2 {
    3 JsonAjax();
    4 }
    5 private void JsonAjax() {
    6 string action = Request["Action"];
    7 if (!string.IsNullOrEmpty(action) && action == "action") //判断是否通过前台的点击事件进来的
    8 {

    9 string str = DataTableConvertJson.DataTableToJson("json", Data.BindData().Tables[0]);
    10 Response.Write(str);
    11 Response.End();
    12 }
    13 }

    最后给大家展示一下生成的json格式:

    {"json":[{"id":"16","name":"zhaoliu","sex":"man"},{"id":"19","name":"zhangsan","sex":"women"}]}

     

     

     

  • 相关阅读:
    Java 数据库操作oracle增删改查,通用封装基于hashmap
    Python 自动化paramiko操作linux使用shell命令,以及文件上传下载linux与windows之间的实现
    Java利用 ganymedssh2build.jar来上传文件到linux以及下载linux文件以及执行linux shell命令
    Java Calendar and SimpleDateFormat 时间模块
    Java 读取properties
    Java java httpclient4.5 进行http,https通过SSL安全验证跳过,封装接口请求 get,post(formdata,json)封装,文件上传下载
    Python 基于request库的get,post,delete,封装
    更法第一 (zz)
    北京将投资707亿元建三条地铁新线 (zz.IS2120@BG57IV3)
    fgetws 讀取Unicode文件 (zz.IS2120@BG57IV3)
  • 原文地址:https://www.cnblogs.com/bradwarden/p/2357440.html
Copyright © 2020-2023  润新知