38.Silverlight读取服务器端格式化的Json数据

38.Silverlight读取服务器端格式化的Json数据,第1张

概述        Json数据是一种轻量级的数据交换格式,它的传输效率比XML更高,在Silverlight的应用起来可以让Silverlight获取数据速度增 快,减少传输的字符数量。在本节将用一个实例来讲解如何将一个类序列化为Json数据并且传输到Silverlight端。         实现原理:在服务器端新建一个一般处理程序页面“GetJson.ashx”,使用DataContractJs

        Json数据是一种轻量级的数据交换格式,它的传输效率比XML更高,在Silverlight的应用起来可以让Silverlight获取数据速度增 快,减少传输的字符数量。在本节将用一个实例来讲解如何将一个类序列化为Json数据并且传输到Silverlight端。

        实现原理:在服务器端新建一个一般处理程序页面“GetJson.ashx”,使用DataContractJsonSerializer类的 WriteObject()函数来将类序列化为Json数据集合,然后再Silverlight端通过 DataContractJsonSerializer类的Readobject()函数来将Json数据还原为类。当然在Silverlight端我们 使用WebRequest来下载数据。

        首先我们新建一个新的Silverlight应用程序,然后再服务器端和Silverlight端同时添加两个类City.cs(有数个属性)和Citys.cs(有一个属性为City类的List集合)。

 

  public class City         private string _Cityname;     private string _CityNum;     private string _Provence;          public string Provence         get { return _Provence; }     set { _Provence = value; }         public string CityNum         get { return _CityNum; }     set { _CityNum = value; }         public string Cityname         get { return _Cityname; }     set { _Cityname = value; }             public class Citys         private List<City> _CityList;          public List<City> CityList         get { return _CityList; }     set { _CityList = value; }           

        然后我们在服务器端新建一个一般处理程序页面“GetJson.ashx”,然后添加以下代码以实例化多个城市对象,然后转回为Json数据。注意在这里我们需要单独引入System.Runtime.Serialization.dll;

 

  /// <summary>     /// GetJson 的摘要说明     /// </summary>     public class GetJson : IhttpHandler              public voID ProcessRequest(httpContext context)         //步骤一     //将类Citys格式化为Json字符串     string JsonString = ToJsonString(GetCitys());     context.Response.ContentType = "text/plain"    context.Response.Write(JsonString);              private Citys GetCitys()         //实例化字符数据组     Citys citys = new Citys();     citys.CityList = new List<City>() {     new City(){ Cityname="成都", CityNum="028", Provence="四川"},     new City(){ Cityname="昆明", Provence="云南"},     new City(){ Cityname="广州", Provence="广东"},     new City(){ Cityname="上海", Provence="上海"},     new City(){ Cityname="重庆", Provence="重庆"    };     return citys;         // 将一个Object类序列化为Json字符串     public string ToJsonString(object ToJsonObject)         using (MemoryStream ms = new MemoryStream())         DataContractJsonSerializer serializer =     new DataContractJsonSerializer(ToJsonObject.GetType());     serializer.WriteObject(ms, ToJsonObject);     StringBuilder sb = new StringBuilder();     sb.Append(EnCoding.UTF8.GetString(ms.ToArray()));     return sb.ToString();             public bool IsReusable         get         return false              

        运行GetJson.ashx页面我们可以得到类格式化为Json之后的字符如下:

 

  {"CityList":[{"Cityname":"成都","CityNum":"028","Provence":"四川"},     {"Cityname":"昆明","Provence":"云南"},     {"Cityname":"广州","Provence":"广东"},     {"Cityname":"上海","Provence":"上海"},     {"Cityname":"重庆","Provence":"重庆"}]}   

        在Silverlight端首先需要引入System.ServiceModel.Web.dll和System.Runtime.Serialization.dll,然后再敲入下面代码以调用一般应用程序页面得到的字符串,并且反序列化为类。

 

  public MainPage()         InitializeComponent();     //步骤二     //调用http://localhost:2598/GetJson.ashx获取到Json数据流     Uri endpoint = new Uri("http://localhost:2598/GetJson.ashx");     WebRequest request = WebRequest.Create(endpoint);     request.Method = "POST"    request.ContentType = "application/x-www-form-urlencoded"    request.BeginGetResponse(new AsyncCallback(ResponseReady), request);              voID ResponseReady(IAsyncResult asyncResult)         WebRequest request = asyncResult.AsyncState as WebRequest;     WebResponse response = request.EndGetResponse(asyncResult);     //步骤三     //调用UI线程更新DataGrID     this.dataGrID1.dispatcher.BeginInvoke(()=>{     this.dataGrID1.ItemsSource =     (Deserialize<Citys>(response.GetResponseStream()) as Citys).CityList;     });         // 将Json字符流反序列化为对象     public static T Deserialize<T>(Stream stream)         DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));     return (T)serializer.Readobject(stream);       

       本实例采用VS2010+Silverlight 4.0,如需源码请点击 SLLinkJson.rar 下载。

总结

以上是内存溢出为你收集整理的38.Silverlight读取服务器端格式化的Json数据全部内容,希望文章能够帮你解决38.Silverlight读取服务器端格式化的Json数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1078077.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存