首页 > PHP资讯 > HTML5培训技术 > 项目拾遗——JSon再体验

项目拾遗——JSon再体验

HTML5培训技术
JSON:JavaScript 对象表示法(JavaScript Object Notation),是轻量级的文本数据交换格式,也是基于纯文本的数据格式。由于 JSON 天生是为 JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简单的 String,Number,Boolean,也可以传输一个数组,或者一个复杂的 Object 对象。说白了,JSon就是一个JavaScript的数据传输格式或说标准。

  一、JSON似而不是XML:    似:
      JSON 是纯文本
      JSON 具有“自我描述性”
      JSON 具有层级结构(值中存在值)
      JSON 可通过 JavaScript 进行解析
      JSON 数据可使用 AJAX 进行传输
    不是
      没有结束标签
      更短
      读写的速度更快
      能够使用内建的 JavaScript eval() 方法进行解析
      使用数组
      不使用保留字

  当然,这些都是官方的说法,至于具体的体验在后面的例子中会有~~~


  二、语法规则:     数据在名称/值对中:"firstName" : "John"
     数据由逗号分隔:{ "firstName":"John" , "lastName":"Doe" }
     花括号保存对象:
             {"employees": [
              { "firstName":"John" , "lastName":"Doe" },
              { "firstName":"Anna" , "lastName":"Smith" },
              { "firstName":"Peter" , "lastName":"Jones" }
              ]
             }
     方括号保存数组:
            "employees": [
             { "firstName":"John" , "lastName":"Doe" },
             { "firstName":"Anna" , "lastName":"Smith" },
             { "firstName":"Peter" , "lastName":"Jones" }

            ]

     最基本的格式问题,会用即可。

  三、初级入门

    1 创建包含JSON语法的JavaScript字符串

	var txt = '{ "employees" : [' +		'{ "firstName":"Bill" , "lastName":"Gates" },' +		'{ "firstName":"George" , "lastName":"Bush" },' +		'{ "firstName":"Thomas" , "lastName":"Carter" } ]}';


    2 使用Eval()进行解析:

        var obj = eval ("(" + txt + ")");


    3 在网页中使用JavaScript对象:

	

First Name:
Last Name:

<script type="text/javascript"> document.getElementById("fname").innerHTML = obj.employees[1].firstName document.getElementById("lname").innerHTML = obj.employees[1].lastName 《script》


  四、JSon在项目中

C#代码:

        public void Query(HttpContext context)        {            context.Response.ContentType = "text/plain";            //===============================================================            //获取查询条件:【用户id,开始时间,结束时间,关键字】            string category, startTime, endTime, key;            category = startTime = endTime = key = "";            if (null != context.Request.QueryString["Category"])            {                category = context.Request.QueryString["Category"].ToString().Trim();            }            if (null != context.Request.QueryString["StartTime"])            {                startTime = context.Request.QueryString["StartTime"].ToString().Trim();            }            if (null != context.Request.QueryString["EndTime"])            {                endTime = context.Request.QueryString["EndTime"].ToString().Trim();            }            //if (null != context.Request.QueryString["KeyWord"])            //{            //    key = context.Request.QueryString["KeyWord"].ToString().Trim();            //}            //================================================================            //获取分页和排序信息:页大小,页码,排序方式,排序字段            int pageRows, page;            pageRows = 10;            page = 1;            string order, sort, oderby; order = sort = oderby = "";            if (null != context.Request.QueryString["rows"])            {                pageRows = int.Parse(context.Request.QueryString["rows"].ToString().Trim());            }            if (null != context.Request.QueryString["page"])            {                page = int.Parse(context.Request.QueryString["page"].ToString().Trim());            }            if (null != context.Request.QueryString["sort"])            {                order = context.Request.QueryString["sort"].ToString().Trim();            }            if (null != context.Request.QueryString["order"])            {                sort = context.Request.QueryString["order"].ToString().Trim();            }            //===================================================================            //组合查询语句:条件+排序            StringBuilder strWhere = new StringBuilder();            //if (key != "")            //{            //    strWhere.AppendFormat(" ScoreLevel like '%{0}%' and ", key);            //}            if (category != "")            {                strWhere.AppendFormat(" ExamineSign= '{0}' and ", category);            }            if (startTime != "")            {                strWhere.AppendFormat(" PublishDate >= '{0}' and ", startTime);            }            if (endTime != "")            {                strWhere.AppendFormat(" PublishDate <= '{0}' and ", endTime);            }            //删除多余的and            int startindex = strWhere.ToString().LastIndexOf("and");//获取最后一个and的位置            if (startindex >= 0)            {                strWhere.Remove(startindex, 3);//删除多余的and关键字            }            if (sort != "" && order != "")            {                //strWhere.AppendFormat(" order by {0} {1}", sort, order);//添加排序                oderby = order + " " + sort;            }            //DataSet ds = Bnotice.GetList(strWhere.ToString());  //调用不分页的getlist            //调用分页的GetList方法            DataSet ds = useractive.GetListByPage(strWhere.ToString(), oderby, (page - 1) * pageRows + 1, page * pageRows);            int count = useractive.GetRecordCount(strWhere.ToString());	      //  通过ToJson将获取的Dataset格式的数据类型,转化为JSON类型      string strJson = ToJson.Dataset2Json(ds, count);       context.Response.Write(strJson);       context.Response.End();


C#,ToJson类:将获取的Dataset类型或者是Datatable类型的数据进行转化为Json类型


 public class ToJson    {        #region DataSet转换成Json格式        ///         /// DataSet转换成Json格式          ///           /// 
          ///           public static string DataTable2Json(DataTable dt)        {            StringBuilder jsonBuilder = new StringBuilder();            for (int i = 0; i < dt.Rows.Count; i++)            {                jsonBuilder.Append("{");                for (int j = 0; j < dt.Columns.Count; j++)                {                    jsonBuilder.Append(""");                    jsonBuilder.Append(dt.Columns[j].ColumnName);                    jsonBuilder.Append("":"");                    jsonBuilder.Append(dt.Rows[i][j].ToString());                    jsonBuilder.Append("",");                }                if (dt.Columns.Count > 0)                {                    jsonBuilder.Remove(jsonBuilder.Length - 1, 1);                }                jsonBuilder.Append("},");            }            if (dt.Rows.Count > 0)            {                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);            }            return jsonBuilder.ToString();        }        #endregion dataTable转换成Json格式    }


HTML,传递给前台HTML界面:


用户姓名 认证机构 认证信息 时间 审阅状态 通知 是否认证


  注意
    1、其中的field是获取的Json字符串中对应的值
    2、url是该页面调用的一般处理程序所在的路径

五、小结

  通过简单的例子和在项目中的实践:

    我们可以知道Json就是一种JavaScript的数据传输格式;

    简单的了解和实践了Json的语法格式,创建,调用;

    如何将从 获取的Dataset或是Datatable类型的数据转化为Json类型;

  至于其优缺点以及技巧,需要在以后的实践中加以自己的理解和体会~~~


上一篇:js版五子棋,css3+js
下一篇:JS模块化编程

HTML5培训技术

本文由欣才IT学院整理发布,未经许可,禁止转载。
支持32不支持0