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下利用arguments实现string.format函数
Aug 24 Javascript
工作中常用到的JS表单验证代码(包括例子)
Nov 11 Javascript
Google AJAX 搜索 API实现代码
Nov 17 Javascript
利用js实现遮罩以及弹出可移动登录窗口
Jul 08 Javascript
javascript获取下拉列表框当中的文本值示例代码
Jul 31 Javascript
javacript使用break内层跳出外层循环分析
Jan 12 Javascript
封装了jQuery的Ajax请求全局配置
Feb 05 Javascript
Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
Feb 02 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
Oct 11 Javascript
jQuery用FormData实现文件上传的方法
Nov 21 Javascript
Javascript中prototype与__proto__的关系详解
Mar 11 Javascript
深入理解Vue 的钩子函数
Sep 05 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
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
解决Jquery鼠标经过不停滑动的问题
2014/03/03 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
上传图片js判断图片尺寸和格式兼容IE
2014/09/01 Javascript
Javascript节点关系实例分析
2015/05/15 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
关于Vue单页面骨架屏实践记录
2017/12/13 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
2018/05/03 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
laravel-admin 与 vue 结合使用实例代码详解
2019/06/04 Javascript
vue element-ui实现input输入框金额数字添加千分位
2019/12/29 Javascript
JS实现音乐钢琴特效
2020/01/06 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
Python中os.path用法分析
2015/01/15 Python
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
python删除服务器文件代码示例
2018/02/09 Python
深入了解Django中间件及其方法
2019/07/26 Python
用Python画一个LinkinPark的logo代码实例
2019/09/10 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
应聘自荐信
2013/12/14 职场文书
旷课检讨书2000字
2014/01/14 职场文书
村党支部公开承诺书
2014/05/29 职场文书
银行实习推荐信
2015/03/27 职场文书
Python+Appium自动化测试的实战
2021/06/30 Python