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 相关文章推荐
javascript笔记 String类replace函数的一些事
Sep 22 Javascript
Js注册协议倒计时的小例子
Jun 24 Javascript
jquery 层次选择器siblings与nextAll的区别介绍
Aug 02 Javascript
DropDownList实现可输入可选择(两种版本可选)
Dec 07 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
Apr 13 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
Sep 11 jQuery
angular中不同的组件间传值与通信的方法
Nov 04 Javascript
详解ES6中的Map与Set集合
Mar 22 Javascript
微信小程序实现收货地址左滑删除
Nov 18 Javascript
微信小程序HTTP请求从0到1封装
Sep 09 Javascript
详解js中的几种常用设计模式
Jul 16 Javascript
如何实现vue的tree组件
Dec 03 Vue.js
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
在js(jquery)中获得文本框焦点和失去焦点的方法
2012/12/04 Javascript
jquery ajax中使用jsonp的限制解决方法
2013/11/22 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
js加减乘除丢失精度问题解决方法
2014/05/16 Javascript
js实现缓冲运动效果的方法
2015/04/10 Javascript
使用jquery实现仿百度自动补全特效
2015/07/23 Javascript
JS实现网页上随机产生超链接地址的方法
2015/11/09 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
自制简易打赏功能的实例
2017/09/02 Javascript
解决vue路由name同名,路由重复的问题
2020/08/05 Javascript
[52:39]完美世界DOTA2联赛PWL S3 CPG vs Forest 第一场 12.16
2020/12/17 DOTA
从零学Python之入门(五)缩进和选择
2014/05/27 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
2018/05/30 Python
python+Splinter实现12306抢票功能
2018/09/25 Python
Python中使用遍历在列表中添加字典遇到的坑
2019/02/27 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
Matplotlib自定义坐标轴刻度的实现示例
2020/06/18 Python
TensorFlow中如何确定张量的形状实例
2020/06/23 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
泰国汽车、火车和轮渡票预订网站:Bus Online Ticket
2017/09/09 全球购物
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
汽车工程专业应届生求职信
2013/10/19 职场文书
厂区绿化方案
2014/05/08 职场文书
公司年会策划方案
2014/05/17 职场文书
创先争优标语
2014/06/27 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
2014年护士工作总结范文
2014/11/11 职场文书
小学生通知书评语
2014/12/31 职场文书
亮剑观后感300字
2015/06/05 职场文书
色戒观后感
2015/06/12 职场文书
Python连接Postgres/Mysql/Mongo数据库基本操作大全
2021/06/29 Python