Jquery解析json数据详解


Posted in Javascript onDecember 26, 2013

最近被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字符串

 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,但在项目中一般都是从数据库中或者service中获得数据

 public static DataSet BindData()
        {
            DataTable dtData = new DataTable();
            dtData.Columns.Add("id");
            dtData.Columns.Add("name");
            dtData.Columns.Add("sex");
            DataRow drData;
            drData = dtData.NewRow();
            drData[0] = 16;
            drData[1] = "zhaoliu";
            drData[2] = "man";
            dtData.Rows.Add(drData);
            drData = dtData.NewRow();
            drData[0] = 19;
            drData[1] = "zhangsan";
            drData[2] = "women";
            dtData.Rows.Add(drData);
            DataSet ds = new DataSet();
            ds.Tables.Add(dtData);
            return ds;
        }

第三步 创建aspx页面

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

<head runat="server">
    <title></title>
    <script language="javascript" type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
    <script language="javascript" type="text/javascript">
        $(function () {
            $("#btn").click(function () {
                $.getJSON("GetJsonDemo.aspx", { Action: "action" },
                 function (data) {
                     var txt = "";
                     $.each(data, function (k, v) { $.each(v, function (m, n) { txt += "id :"+n.id + ";name :" + n.name + ";sex :"+n.sex+"<br/>" }); });
                     $("#txt").html(txt);
                 });
            });
         });
         $(function () {
             $("#btn2").click(function () {
                 $.get("GetJsonDemo.aspx", { Action: "action" },
                 function (data) { $("#txt2").text(data); });
             });
         });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <input id="btn" type="button" value="paser json" /><br />
        <input id="btn2" type="button" value="watch json string" /><br />
        <label id="txt"></label><br />
         <label id="txt2"></label>
    </div>
    </form>
</body>

后台页面:
 protected void Page_Load(object sender, EventArgs e)
        {
            JsonAjax();
        }
        private void JsonAjax() {
            string action = Request["Action"];
            if (!string.IsNullOrEmpty(action) && action == "action")  //判断是否通过前台的点击事件进来的
            {
                string str = DataTableConvertJson.DataTableToJson("json", Data.BindData().Tables[0]);
                Response.Write(str);
                Response.End();
            }
        }

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

Top of Form

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

Bottomof Form

Javascript 相关文章推荐
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
Nov 30 Javascript
基于jquery实现图片广告轮换效果代码
Jul 07 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
Jun 24 Javascript
排序算法的javascript实现与讲解(99js手记)
Sep 28 Javascript
javascript 动态修改css样式方法汇总(四种方法)
Aug 27 Javascript
每天一篇javascript学习小结(String对象)
Nov 18 Javascript
js贪吃蛇游戏实现思路和源码
Apr 14 Javascript
微信小程序 支付功能实现PHP实例详解
May 12 Javascript
AngularJS页面带参跳转及参数解析操作示例
Jun 28 Javascript
vue+Java后端进行调试时解决跨域问题的方式
Oct 19 Javascript
Angular4编程之表单响应功能示例
Dec 13 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
Oct 18 Javascript
Jquery getJSON方法详细分析
Dec 26 #Javascript
JQuery判断HTML元素是否存在的两种解决方法
Dec 26 #Javascript
JS 仿腾讯发表微博的效果代码
Dec 25 #Javascript
javascript使用定时函数实现跳转到某个页面
Dec 25 #Javascript
JS不间断向上滚动效果代码
Dec 25 #Javascript
js中同步与异步处理的方法和区别总结
Dec 25 #Javascript
在javascript中实现函数数组的方法
Dec 25 #Javascript
You might like
php读取数据库信息的几种方法
2008/05/24 PHP
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
Laravel 关联模型-关联新增和关联更新的方法
2019/10/10 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
利用javascript/jquery对上传文件格式过滤的方法
2009/07/25 Javascript
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
javascript中的继承实例代码
2011/04/27 Javascript
处理及遍历XML文档DOM元素属性及方法整理
2013/08/23 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
2013/12/12 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
2016/01/23 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
axios发送post请求springMVC接收不到参数的解决方法
2018/03/05 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
2018/08/31 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
Python中的id()函数指的什么
2017/10/17 Python
Python实现列表删除重复元素的三种常用方法分析
2017/11/24 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
Python字典实现伪切片功能
2020/10/28 Python
巴西葡萄酒商店:Divvino
2020/02/22 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
学生手册家长评语
2014/02/10 职场文书
小学节能减排倡议书
2014/05/15 职场文书
2014年党委工作总结
2014/11/22 职场文书
婚礼答谢词
2015/01/04 职场文书
小学生交通安全寄语
2015/02/27 职场文书
村级干部党员公开承诺事项
2015/05/04 职场文书
基于Python的EasyGUI学习实践
2021/05/07 Python
如何在向量化NumPy数组上进行移动窗口
2021/05/18 Python
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript