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 相关文章推荐
JavaScript脚本性能优化注意事项
Nov 18 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
Jul 07 Javascript
密码框显示提示文字jquery示例
Aug 29 Javascript
jquery提取元素里的纯文本不包含span等里的内容
Sep 30 Javascript
如何设置一定时间内只能发送一次请求
Feb 28 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
Jul 25 Javascript
JS实现简单的tab切换选项卡效果
Sep 21 Javascript
Web开发使用Angular实现用户密码强度判别的方法
Sep 27 Javascript
JavaScript动态加载重复绑定问题
Apr 01 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
Dec 18 Javascript
深入学习JavaScript 高阶函数
Jun 11 Javascript
Node.js 实现远程桌面监控的方法步骤
Jul 02 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中批量替换文件名的实现代码
2011/07/20 PHP
PHP Error与Logging函数的深入理解
2013/06/03 PHP
php sybase_fetch_array使用方法
2014/04/15 PHP
详解Window7 下开发php扩展
2015/12/31 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
2019/04/17 PHP
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
jQuery 性能优化指南(3)
2009/05/21 Javascript
setTimeout和setInterval的区别你真的了解吗?
2011/03/31 Javascript
基于jquery封装的一个js分页
2011/11/15 Javascript
JS控制弹出新页面窗口位置和大小的方法
2015/03/02 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
JavaScript中的return语句简单介绍
2015/12/07 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
详解Nodejs基于mongoose模块的增删改查的操作
2016/12/21 NodeJs
Bootstrap中datetimepicker使用小结
2016/12/28 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
layui的table中显示图片方法
2018/08/17 Javascript
vue拖拽排序插件vuedraggable使用方法详解
2020/08/21 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
JS代码触发事件代码实例
2020/01/02 Javascript
封装一下vue中的axios示例代码详解
2020/02/16 Javascript
Python 的 Socket 编程
2015/03/24 Python
Python检测QQ在线状态的方法
2015/05/09 Python
基于Python开发chrome插件的方法分析
2018/07/07 Python
python执行CMD指令,并获取返回的方法
2018/12/19 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
Python中logging日志记录到文件及自动分割的操作代码
2020/08/05 Python
Ariat官网:美国马靴和服装品牌
2019/12/16 全球购物
求职毕业生自荐书
2014/02/08 职场文书
优秀医生事迹材料
2014/02/12 职场文书
数控技校生自我鉴定
2014/03/02 职场文书
工地安全质量标语
2014/06/07 职场文书
2015年技术员工作总结
2015/04/10 职场文书
生日祝酒词大全
2015/08/10 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript