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 相关文章推荐
js模拟弹出效果代码修正版
Aug 07 Javascript
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
Nov 21 Javascript
jquery $.ajax相关用法分享
Mar 16 Javascript
一个简单的瀑布流效果(主体形式自写)
May 27 Javascript
JS操作Cookies的小例子
Oct 15 Javascript
收集json解析的四种方法分享
Jan 17 Javascript
Javascript随机标签云代码实例
Jun 21 Javascript
element ui里dialog关闭后清除验证条件方法
Feb 26 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
May 22 Javascript
Jquery动态列功能完整实例
Aug 30 jQuery
使用layui的layer组件做弹出层的例子
Sep 27 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
Dec 16 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中利用str_pad函数生成数字递增形式的产品编号
2013/09/30 PHP
PHP伪静态Rewrite设置之APACHE篇
2014/07/30 PHP
javascript options属性集合操作代码
2009/12/28 Javascript
仿新浪微博登陆邮箱提示效果的js代码
2013/08/02 Javascript
jquery map方法使用示例
2014/04/23 Javascript
javascript搜索框点击文字消失失焦时文本出现
2014/09/18 Javascript
学习JavaScript设计模式之状态模式
2016/01/08 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
react项目实践之webpack-dev-serve
2018/09/14 Javascript
Nginx设置为Node.js的前端服务器方法总结
2019/03/27 Javascript
前端 javascript 实现文件下载的示例
2020/11/24 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
微信跳一跳python代码实现
2018/01/05 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
vue.js实现输入框输入值内容实时响应变化示例
2018/07/07 Python
python遍历小写英文字母的方法
2019/01/02 Python
django2笔记之路由path语法的实现
2019/07/17 Python
Python中filter与lambda的结合使用详解
2019/12/24 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
python实现电子词典
2020/03/03 Python
浅析两列自适应布局的3种思路
2016/05/03 HTML / CSS
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
html5开发之viewport使用
2013/10/17 HTML / CSS
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
解释一下抽象方法和抽象类
2016/08/27 面试题
一些Unix笔试题和面试题
2013/01/22 面试题
数学与统计学院学生个人职业生涯规划书
2014/02/10 职场文书
医院学雷锋活动策划方案
2014/02/15 职场文书
道路交通安全实施方案
2014/03/12 职场文书
央视元宵晚会主持串词
2014/03/25 职场文书
小学教师先进事迹材料
2014/12/15 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS