Asp.net中Json数据的转化,读取与应用

7 篇文章 0 订阅
6 篇文章 0 订阅

我们需要理解什么是json数据

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,而且它是基于JavaScript 的。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript 等)。这些特性使JSON成为理想的数据交换语言
JSON有两种结构:
①“名/值”对的集合(A collection of name/value pairs)。在不同的语言中,它被理解为对象,结构,关联数组等
②值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组。
JSON数据有严格的格式,只有按照这个格式,才可以进行有效的解析
JSON表示名称/值对:
{ "firstName": "Brett" }
多个名称/值对串在一起:{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aa@qq.com " }
从语法方面来看,这与名称/值对相比并没有很大的优势,但是在这种情况下 JSON更容易使用,而且可读性更好。

当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性:

{ "employees": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "
aa@qq.com " },
{ "firstName": "Jason", "lastName":"Hunter", "email": "
aa@qq.com " },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "
aa@qq.com " }
] }

asp.net使用json数据流程是什么呢?

1 aspx传值至cs

2 cs中处理aspx传来的值,一番处理之后,处理成json格式的值

3  传回aspx。aspx中可以通过拿到的处理后的数据。通过键值对的形式拿到值。

例子如下:

例一:

 

public class JsonHandler : IHttpHandler
     {
 
        public void ProcessRequest(HttpContext context)
         {
             context.Response.ContentType = "text/plain";
             string data = "[{name:\"Tom\",age:\"26\"},{name:\"Jim\",age:\"27\"}]";
             context.Response.Write(data);
         }
 
        public bool IsReusable
         {
             get
             {
                 return false;
             }
         }
     }


②前台解析JSON数据

<head runat="server">
     <title></title>
 
    <script src="js/jquery-1.3.2.js" type="text/javascript"></script>
 
    <script type="text/javascript">
         $(function() {
             $.getJSON(
             "JsonHandler.ashx",
              function(data) {
                   $.each(data, function(i) {
                      $("#cat-list").append("<li>name:" + data[i].name + "  Age:" +data[i].age+ "</li>")
              });
          });
         });  
     </script>
 
</head>
 <body>
     <form id="form1" runat="server">
     <div>
     <ul id="cat-list"></ul>
     </div>
     </form>
 </body>


 

例二:

aspx

<script type="text/javascript">   
 
     $(document).ready(function(){
             var o=
             {
                 showcheck:false,
                 onnodeclick:function(item){
                  
 
                $.getJSON(
                         "../../Ajax/GetPoints.aspx",
                         {ID:item.value},                                     // 传值至后台,给后台处理。
                         function(json,status)
                         {
                             if(status=="success")
                             {
                                 if(json==null)
                                 {
                                     alert("该部门没有卫生检查点!");
                                 }
                                 else
                                 {
                                     var content
                                     ="<table width=\"76%\" border=\"0\" align=\"center\"  cellpadding=\"0\" cellspacing=\"0\">";
                                     var ii=0;
                                    $.each(json,function(i)
                                     {
                                         ii+=1;
                                         if(ii % 5 == 1)
                                         {
                                             content+="<tr>";
                                         }
                                         content+="<td height=\"100%\"   align=\"center\"><table><tr><td colspan=3>" 

                                                        +json[i].PointName+"</td></tr>";
                                         content+="<tr><td>红</td><td>黄</td><td>绿</td></tr></table></td>"
                                         if(ii % 5== 0)
                                         {
                                          content+="</tr><tr>";
                                         }
                                     });
                                     content+="</tr></table>";
                                     $("#PointsContent").html(content);
 
                                }
                             }
                             else
                             {
                                 alert("获取数据失败!");
                             }
                         }     
                     )
                 }
             }
             o.data = treedata;
             $("#tree").treeview(o);
         });
     </script>


GetPoints.cs

public partial class GetPoints : System.Web.UI.Page
     {
         BLL.MonitoringPoint bmp = new BLL.MonitoringPoint();
         protected void Page_Load(object sender, EventArgs e)
         {
             if (!IsPostBack)
             {
                 if (Request.QueryString["ID"] != null &&
                     Request.QueryString["ID"].ToString() != string.Empty)
                 {
                     int intid = Convert.ToInt32(Request.QueryString["ID"].ToString());
                     List<Model.MonitoringPoint> list  = bmp.GetModelList(string.Format("CompanyID = {0}", intid));
               JavaScriptSerializer jss = new JavaScriptSerializer();
                Response.Write(jss.Serialize(list));
                    Response.End();
                 }         
             }
         }
     }


 

我们看到JavaScriptSerializer 这个对象的Serialize这个方法,这个方法是做什么用的呢?

Model.MonitoringPoint 本身有PointName这个字段,Serialize这个方法方法处理,将数据对象处理成json格式的数据,其中有

 

[{"PointName":"卫生检查点1","city":"南京","location":"玄武区"}]........等等。那么通过 json[i].pointName的形式可以拿到里面的值。
我们当然可以使用$.ajax方法来拿到处理后的json数据了。
$.ajax({
      type:"GET",
      dataType:"json",
      data:{id:json[i].ID},
      async:false,
      url:"../../Ajax/CalculateLamps.aspx",
      success:function(data){
           redlamp+=parseInt(data[0]["red"],10);
           greenlamp+=parseInt(data[0]["green"],10);
           yellowlamp+=parseInt(data[0]["yellow"],10);                                             
       }
 });


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值