代码改变世界

轻量级的数据交换格式——初识Json(下)

2012-05-17 17:00  飘扬的红领巾  阅读(550)  评论(0编辑  收藏  举报

    其实第一次见到服务器端使用json是在用asp.net mvc做项目的时候,在asp.net mvc 1.0中Controller可以直接返回给视图一个json对象。但当时大部分时候是返回一个ViewData,对json没有使用过。
下面就介绍在.net环境下解析json的一个api——json.net。我们使用Json.net来实现JSON数据的序列化和反序列化。下载地址:http://www.newtonsoft.com/downloads/json/json.zip
以下实例介绍了一个与jquery结合实现的ajax调用服务器端解析的json,并显示到浏览器。

step 1、先建立一个数据库表的实体模型(往往在分层开发中经常这样做):

UserInfo.cs:

public class UserInfo 
  { 
      private int _userid; 
      private string _username; 
      private string _password; 
  
      ///  
      /// 构造函数 
     ///  
     public UserInfo() 
     { 
     } 
     ///  
     /// 赋值函数 
     ///  
     /// UserId 
     /// UserName 
     /// Password 
     public UserInfo(int __userid, String __username, String __password) 
     { 
         _userid = __userid; 
         _username = __username; 
         _password = __password; 
     } 
     ///  
     /// UserId 
     ///  
     public int UserId 
     { 
         get 
         { 
             return _userid; 
         } 
         set 
         { 
             _userid = value; 
         } 
     } 
 
     ///  
     /// UserName 
     ///  
     public String UserName 
     { 
         get 
         { 
             return _username; 
         } 
         set 
         { 
             _username = value; 
         } 
     } 
 
     ///  
     /// Password 
     ///  
     public String Password 
     { 
         get 
         { 
             return _password; 
         } 
         set 
         { 
             _password = value; 
         } 
     }        
 }

step 2、然后建立一个Handler.ashx,用于返回一个json格式的字符串

using System; 
  using System.Web; 
  using Newtonsoft.Json;//引用json.net 
  
  public class Handler : IHttpHandler { 
      
      public void ProcessRequest (HttpContext context) { 
         context.Response.ContentType = "text/plain"; 
         UserInfo userInfo = new UserInfo(1,"liping","123"); 
         string strJson = JavaScriptConvert.SerializeObject(userInfo);//将对象序列化为json格式的字符串 
         //UserInfo userByJson = (UserInfo)JavaScriptConvert.DeserializeObject(strJson, typeof(UserInfo));//通过这样将json格式字符串反序列化成对象 
         context.Response.Write(strJson); 
     } 
  
     public bool IsReusable { 
         get { 
             return false; 
         } 
     } 
 
 }

访问效果:

step 3、客服端使用ajax访问Handler.ashx:
javascript code:

 
    
dom code:
1 <div id="divclickajax">点击执行ajax请求</div>
最后效果

   本文主要介绍了利用json.net对对象进行序列化(反序列化)的操作,从而为客服端提供合适的数据格式,最后通过ajax访问得到结果。关于 json.net的更多信息可以参见官方网站:http://james.newtonking.com/projects/json-net.aspx