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代码
Dec 15 Javascript
javascript 清空form表单中某种元素的值
Dec 26 Javascript
js replace正则表达式应用案例讲解
Jan 17 Javascript
Javascript call和apply区别及使用方法
Nov 14 Javascript
javascript中的正则表达式使用详解
Aug 30 Javascript
关于javascript获取内联样式与嵌入式样式的实例
Jun 01 Javascript
Form表单上传文件(type=&quot;file&quot;)的使用
Aug 03 Javascript
详解利用Angular实现多团队模块化SPA开发框架
Nov 27 Javascript
微信小程序模拟cookie的实现
Jun 20 Javascript
vue观察模式浅析
Sep 25 Javascript
探索JavaScript中私有成员的相关知识
Jun 13 Javascript
浅析JavaScript预编译和暗示全局变量
Sep 03 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
二十行语句实现从Excel到mysql的转化
2006/10/09 PHP
php修改时间格式的代码
2011/05/29 PHP
实例讲解php数据访问
2016/05/09 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
javascript自定义in_array()函数实现方法
2015/08/03 Javascript
javascript常用经典算法实例详解
2015/11/25 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
2016/05/11 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
2016/10/25 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
如何利用nodejs自动定时发送邮件提醒(超实用)
2020/12/01 NodeJs
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python访问纯真IP数据库的代码
2011/05/19 Python
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
python读写文件write和flush的实现方式
2020/02/21 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
Kate Spade澳大利亚官方网站:美国设计师手袋品牌
2019/09/10 全球购物
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
投标单位介绍信
2014/01/09 职场文书
学党史心得体会
2014/09/05 职场文书
群众路线个人整改措施
2014/10/24 职场文书
2015年店长工作总结范文
2015/04/08 职场文书
《自己去吧》教学反思
2016/02/16 职场文书
总结高并发下Nginx性能如何优化
2021/11/01 Servers
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android
JS前端轻量fabric.js系列物体基类
2022/08/05 Javascript