天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

一步一步學Silverlight :數據與通信之JSON

概述

Silverlight 2 Beta 1版本發布了,無論從Runtime還是Tools都給我們帶來了很多的驚喜,如支持框架語言Visual Basic, Visual C#, IronRuby, IronPython,對JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步學Silverlight 2系列》文章帶您快速進入Silverlight 2開發。

本文將簡單介紹在Silverlight 2中對于JSON的支持。

簡單示例

在本文中我們仍然采用前面兩篇文章中用過的顯示最新隨筆這樣一個示例(舉一反三嘛:)),最終完成的效果如下圖所示:

TerryLee_Silverlight2_0065

首先我們建立服務端,以便能夠提供JSON格式的數據。在這里為了產生JSON格式的數據,我們借助于一個開源項目Json.NET。建立兩個實體類型:

public class Post{    public int Id { get; set; }    public string Title { get; set; }    public string Author { get; set; }}

public class Blog{    public List<Post> Posts { get; set; }}

在Silverlight項目中我們也會使用到這兩個實體類,新建一個HttpHandler,產生JSON格式數據,我們使用Json.NET中的JavaScriptConvert.SerializeObject方法即可序列化一個對象為JSON格式:

public class BlogHandler : IHttpHandler{    public void ProcessRequest(HttpContext context)    {        context.Response.ContentType = "text/plain";        List<Post> posts = new List<Post>()        {            new Post{ Id=1, Title="一步一步學Silverlight 2系列(13):數據與通信之WebRequest", Author="TerryLee" },            new Post{ Id=2, Title="一步一步學Silverlight 2系列(12):數據與通信之WebClient", Author="TerryLee" },            new Post{ Id=3, Title="一步一步學Silverlight 2系列(11):數據綁定", Author="TerryLee" },            new Post{ Id=4, Title="一步一步學Silverlight 2系列(10):使用用戶控件", Author="TerryLee" },            new Post{ Id=5, Title="一步一步學Silverlight 2系列(9):使用控件模板", Author="TerryLee" },            new Post{ Id=6, Title="一步一步學Silverlight 2系列(8):使用樣式封裝控件觀感", Author="TerryLee" }        };        Blog blog = new Blog();        blog.Posts = posts;        context.Response.Write(JavaScriptConvert.SerializeObject(blog));    }    public bool IsReusable    {        get        {            return false;        }    }}

現在測試一下HttpHandler,查看一下生成的數據格式:

TerryLee_Silverlight2_0073

 

 

對這些數據格式化一下,看起來更明顯,這里推薦一個在線JSON數據格式化工具http://www.curiousconcept.com/jsonformatter/

TerryLee_Silverlight2_0075

 

 

格式化后的數據如下:

TerryLee_Silverlight2_0076

現在實現在Silverlight中獲取JSON數據,并進行反序列化,界面布局XAML就不再貼出來了,跟前面兩篇的示例一樣。在Silverlight 2中,內置了對于JSON的支持,通過命名空間System.Runtime.Serialization.Json提供,位于System.ServiceModel.Web.dll中。

我們使用WebRequest獲取數據:

private void UserControl_Loaded(object sender, RoutedEventArgs e){    Uri endpoint = new Uri("http://localhost:8081/BlogHandler.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);    using (Stream responseStream = response.GetResponseStream())    {        DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(Blog));        Blog blog = jsonSerializer.ReadObject(responseStream) as Blog;        Posts.ItemsSource = blog.Posts;    }}

DataContractJsonSerializer用于將對象序列化為JSON或者反序列化為對象實例,分別使用方法WriteObject和ReadObject。

TerryLee_Silverlight2_0074

至此一個完整的在Silverlight 2對于JSON的支持示例就完成了。運行后的效果與前面的示例一樣:

TerryLee_Silverlight2_0065

結束語

本文簡單介紹了在Silverlight 2中對于JSON的支持,DataContractJsonSerializer用于將對象序列化為JSON或者反序列化為對象實例,你可以從這里下載本文示例代碼。

NET技術一步一步學Silverlight :數據與通信之JSON,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 久久99免费视频 | 性色AV乱码一区二区三区视频 | 午理论理影片被窝 | sao虎影院桃红视频在线观看 | 99久久伊人一区二区yy5099 | 浪潮色诱AV久久久久久久 | 黑粗硬大欧美在线视频 | 8090碰成年女人免费碰碰尤物 | 精品视频中文字幕 | 中国二级毛片 | 国产精选视频在线观看 | 久久国产成人午夜AV影院无码 | 日韩欧美国产免费看清风阁 | 92看看福利午夜影院 | 久久综合狠狠综合久久综合88 | 精品国产乱码久久久久久免费流畅 | 青草在线在线d青草在线 | 丰满女朋友在线观看中文 | 久久www99re在线播放 | 久草热8精品视频在线观看 久草青青在线 | 诱人的秘书BD在线观看 | 善良的小峓子2在钱免费中文字 | 蜜臀AV熟女人妻中文字幕 | 国产精品久久久久婷婷五月色 | 午夜成a人片在线观看 | 国产午夜亚洲精品一区 | 中文在线观看免费网站 | 欧美成人免费一区二区三区不卡 | 亚洲国产成人私人影院 | 天天射天天爱天天干 | 午夜在线播放免费人成无 | 亚洲日韩欧美国产专区 | 亚洲成年人在线观看 | 国内精品久久影视免费 | 一区二区不卡在线视频 | 国产成人在线播放 | 熟妇少妇任你躁在线无码 | xvideos中文版在线视频 | 九九热在线视频 | 精品一区二区三区四区五区六区 | 国产精品成人免费观看 |