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自定义事件代码说明
Jan 31 Javascript
基于JQuery实现异步刷新的代码(转载)
Mar 29 Javascript
jquery $.fn $.fx是什么意思有什么用
Nov 04 Javascript
js中reverse函数的用法详解
Dec 26 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
Sep 25 Javascript
angularjs中的e2e测试实例
Dec 06 Javascript
jQuery中noconflict函数的实现原理分解
Feb 03 Javascript
JavaScript中的getTime()方法使用详解
Jun 10 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
Jul 14 Javascript
svg动画之动态描边效果
Feb 22 Javascript
angular十大常见问题
Mar 07 Javascript
vue实现消息的无缝滚动效果的示例代码
Dec 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
ThinkPHP自动填充实现无限级分类的方法
2014/08/22 PHP
php支付宝接口用法分析
2015/01/04 PHP
CI框架扩展系统核心类的方法分析
2016/05/23 PHP
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
JSON+HTML实现国家省市联动选择效果
2014/05/18 Javascript
Javascript限制网页只能在微信内置浏览器中访问
2014/11/09 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
2015/09/22 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
Google Maps基础及实例解析
2016/08/06 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
2018/05/03 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
2019/06/13 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
Vue3.x源码调试的实现方法
2019/10/13 Javascript
Vue axios获取token临时令牌封装案例
2020/09/11 Javascript
js实现3D粒子酷炫动态旋转特效
2020/09/13 Javascript
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
pycharm 代码自动补全的实现方法(图文)
2020/09/18 Python
非常震撼的纯CSS3人物行走动画
2016/02/24 HTML / CSS
OPPO手机官方商城:中国手机市场出货量第一品牌
2017/10/18 全球购物
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
ECCO俄罗斯官网:北欧丹麦鞋履及皮具品牌
2020/06/26 全球购物
物理系毕业生自荐信
2013/11/01 职场文书
晚会邀请函范文
2014/01/24 职场文书
企业法人代表授权委托书
2014/10/02 职场文书
员工拾金不昧表扬稿
2015/05/05 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
uwsgi+nginx代理Django无法访问静态资源的解决
2021/05/10 Servers
使用react-virtualized实现图片动态高度长列表的问题
2021/05/28 Javascript
Python卷积神经网络图片分类框架详解分析
2021/11/07 Python
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
2022/08/05 Servers