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 相关文章推荐
基于jQuery的图片大小自动适应实现代码
Nov 17 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
Sep 03 Javascript
JavaScript更改原始对象valueOf的方法
Mar 19 Javascript
深入浅析JavaScript系列(13):This? Yes,this!
Jan 05 Javascript
简单讲解AngularJS的Routing路由的定义与使用
Mar 05 Javascript
JavaScript函数中关于valueOf和toString的理解
Jun 14 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
Sep 20 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
Jan 06 Javascript
微信小程序五星评分效果实现代码
Apr 06 Javascript
vue 指令之气泡提示效果的实现代码
Oct 18 Javascript
原生js实现放大镜组件
Jan 22 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
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
用javascript实现页面打印的三种方法
2007/03/05 Javascript
JavaScript中的History历史对象
2008/01/16 Javascript
解javascript 混淆加密收藏
2009/01/16 Javascript
javascript 避免闭包引发的问题
2009/03/17 Javascript
用innerhtml提高页面打开速度的方法
2013/08/02 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
JavaScript Function函数类型介绍
2015/04/08 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
vue.js实现格式化时间并每秒更新显示功能示例
2018/07/07 Javascript
webstrom Debug 调试vue项目的方法步骤
2018/07/17 Javascript
dts文件中删除一个node或属性的操作方法
2018/08/05 Javascript
vue 动态绑定背景图片的方法
2018/08/10 Javascript
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
Python3爬虫之urllib携带cookie爬取网页的方法
2018/12/28 Python
Python图像的增强处理操作示例【基于ImageEnhance类】
2019/01/03 Python
python3.6下Numpy库下载与安装图文教程
2019/04/02 Python
Python使用Pandas库实现MySQL数据库的读写
2019/07/06 Python
手写一个python迭代器过程详解
2019/08/27 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
2020/08/11 Python
Django中ORM的基本使用教程
2020/12/22 Python
HTML5跳转小程序wx-open-launch-weapp的示例代码
2020/07/16 HTML / CSS
纽约21世纪百货官网:Century 21
2016/08/27 全球购物
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
中科前程Java笔试题
2016/11/20 面试题
学生发电厂实习自我鉴定
2013/09/22 职场文书
活动总结范文
2014/08/30 职场文书
最美家庭活动方案
2014/08/31 职场文书
开展党的群众路线教育实践活动总结报告
2014/10/31 职场文书
小学教师师德师风承诺书
2015/04/28 职场文书
介绍信怎么写
2015/05/05 职场文书
葬礼主持词
2015/07/02 职场文书
MySQL 查询速度慢的原因
2021/05/25 MySQL