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 相关文章推荐
Mootools 1.2教程 滑动效果(Slide)
Sep 15 Javascript
JavaScript代码复用模式实例分析
Dec 02 Javascript
js获取当前路径的简单示例代码
Jan 08 Javascript
jQuery中Form相关知识汇总
Jan 06 Javascript
js判断日期时间有效性的方法
Oct 24 Javascript
JS实现队列与堆栈的方法
Apr 21 Javascript
ES6新增的math,Number方法
Aug 06 Javascript
详解如何实现一个简单的Node.js脚手架
Dec 04 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
May 10 Javascript
Node.js模块全局安装路径配置方法
May 17 Javascript
js+css实现红包雨效果
Jul 12 Javascript
通过npm或yarn自动生成vue组件的方法示例
Feb 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
239军机修复记
2021/03/02 无线电
PHP数据库开发知多少
2006/10/09 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
2013/05/03 PHP
PHP文件缓存类实现代码
2015/10/26 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
工作中常用到的JS表单验证代码(包括例子)
2010/11/11 Javascript
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
php图像生成函数之间的区别分析
2012/12/06 Javascript
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
Bootstrap Modal遮罩弹出层代码分享
2016/11/21 Javascript
Jquery EasyUI $.Parser
2017/06/02 jQuery
Vue DevTools调试工具的使用
2017/12/05 Javascript
jquery实现搜索框功能实例详解
2018/07/23 jQuery
通过vue刷新左侧菜单栏操作
2020/08/06 Javascript
vue 如何从单页应用改造成多页应用
2020/10/23 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
Nodejs 微信小程序消息推送的实现
2021/01/20 NodeJs
[03:37]2016完美“圣”典 风云人物:Mikasa专访
2016/12/07 DOTA
django中使用POST方法获取POST数据
2019/08/20 Python
基于python 取余问题(%)详解
2020/06/03 Python
Python eval函数介绍及用法
2020/11/09 Python
python tqdm库的使用
2020/11/30 Python
Canvas中设置width与height的问题浅析
2018/11/01 HTML / CSS
iostream与iostream.h的区别
2015/01/16 面试题
医学生职业规划范文
2014/01/05 职场文书
高考备战决心书
2014/03/11 职场文书
《鹬蚌相争》教学反思
2014/04/22 职场文书
活动总结怎么写
2014/04/28 职场文书
心理学专业求职信
2014/06/16 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
考试作弊检讨书怎么写?
2014/12/21 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
学校运动会通讯稿
2015/07/18 职场文书
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python
「Manga Time Kirara MAX」2022年5月号封面公开
2022/03/21 日漫