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 相关文章推荐
jQuery的强大选择器小结
Dec 27 Javascript
JavaScript中为元素加上name属性的方法
May 09 Javascript
JavaScript高级程序设计 错误处理与调试学习笔记
Sep 10 Javascript
js判读浏览器是否支持html5的canvas的代码
Nov 18 Javascript
javascript修改表格背景色实例代码分享
Dec 10 Javascript
分享一个自己动手写的jQuery分页插件
Aug 28 Javascript
基于jQuery实现的图片切换焦点图整理
Dec 07 Javascript
JS实现具备延时功能的滑动门菜单效果
Sep 17 Javascript
jQuery简单注册和禁用全局事件的方法
Jul 25 Javascript
Vue表单实例代码
Sep 05 Javascript
Dropify.js图片宽高自适应的方法
Nov 27 Javascript
浅谈Node.js 中间件模式
Jun 12 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代码
2012/06/08 PHP
PHP批量采集下载美女图片的实现代码
2013/06/03 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
2013/06/28 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
2014/07/08 PHP
php遍历目录方法小结
2015/03/10 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
怎么限制input的text里输入的值只能是数字(正则、js)
2016/05/16 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
微信小程序 Template详解及简单实例
2017/01/05 Javascript
详解vue父子模版嵌套案例
2017/03/04 Javascript
jquery单击文字或图片内容放大并居中显示
2017/06/23 jQuery
收藏AngularJS中最重要的核心功能
2017/07/09 Javascript
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
jquery实现下载图片功能
2019/07/18 jQuery
js 根据对象数组中的属性进行排序实现代码
2019/09/12 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
2020/01/21 Javascript
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
Python中标准模块importlib详解
2017/04/16 Python
Python模块文件结构代码详解
2018/02/03 Python
Python+pandas计算数据相关系数的实例
2018/07/03 Python
Python基础教程之if判断,while循环,循环嵌套
2019/04/25 Python
Python3实现建造者模式的示例代码
2020/06/28 Python
详解Html5 Canvas画线有毛边解决方法
2018/03/01 HTML / CSS
英国拳击装备购物网站:RDX Sports
2018/01/23 全球购物
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
怎样从/向数据文件读/写结构
2014/11/23 面试题
初三化学教学反思
2014/01/23 职场文书
公务员转正鉴定材料
2014/02/11 职场文书
优秀共产党员演讲稿
2014/09/04 职场文书
机关干部作风建设剖析材料
2014/10/23 职场文书
公司备用金管理制度
2015/08/04 职场文书
个人工作决心书
2015/09/22 职场文书