一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

一步一步學(xué)Silverlight :數(shù)據(jù)與通信之JSON

概述

Silverlight 2 Beta 1版本發(fā)布了,無(wú)論從Runtime還是Tools都給我們帶來(lái)了很多的驚喜,如支持框架語(yǔ)言Visual Basic, Visual C#, IronRuby, IronPython,對(duì)JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步學(xué)Silverlight 2系列》文章帶您快速進(jìn)入Silverlight 2開(kāi)發(fā)。

本文將簡(jiǎn)單介紹在Silverlight 2中對(duì)于JSON的支持。

簡(jiǎn)單示例

在本文中我們?nèi)匀徊捎们懊鎯善恼轮杏眠^(guò)的顯示最新隨筆這樣一個(gè)示例(舉一反三嘛:)),最終完成的效果如下圖所示:

TerryLee_Silverlight2_0065

首先我們建立服務(wù)端,以便能夠提供JSON格式的數(shù)據(jù)。在這里為了產(chǎn)生JSON格式的數(shù)據(jù),我們借助于一個(gè)開(kāi)源項(xiàng)目Json.NET。建立兩個(gè)實(shí)體類(lèi)型:

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項(xiàng)目中我們也會(huì)使用到這兩個(gè)實(shí)體類(lèi),新建一個(gè)HttpHandler,產(chǎn)生JSON格式數(shù)據(jù),我們使用Json.NET中的JavaScriptConvert.SerializeObject方法即可序列化一個(gè)對(duì)象為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="一步一步學(xué)Silverlight 2系列(13):數(shù)據(jù)與通信之WebRequest", Author="TerryLee" },            new Post{ Id=2, Title="一步一步學(xué)Silverlight 2系列(12):數(shù)據(jù)與通信之WebClient", Author="TerryLee" },            new Post{ Id=3, Title="一步一步學(xué)Silverlight 2系列(11):數(shù)據(jù)綁定", Author="TerryLee" },            new Post{ Id=4, Title="一步一步學(xué)Silverlight 2系列(10):使用用戶控件", Author="TerryLee" },            new Post{ Id=5, Title="一步一步學(xué)Silverlight 2系列(9):使用控件模板", Author="TerryLee" },            new Post{ Id=6, Title="一步一步學(xué)Silverlight 2系列(8):使用樣式封裝控件觀感", Author="TerryLee" }        };        Blog blog = new Blog();        blog.Posts = posts;        context.Response.Write(JavaScriptConvert.SerializeObject(blog));    }    public bool IsReusable    {        get        {            return false;        }    }}

現(xiàn)在測(cè)試一下HttpHandler,查看一下生成的數(shù)據(jù)格式:

TerryLee_Silverlight2_0073

 

 

對(duì)這些數(shù)據(jù)格式化一下,看起來(lái)更明顯,這里推薦一個(gè)在線JSON數(shù)據(jù)格式化工具http://www.curiousconcept.com/jsonformatter/

TerryLee_Silverlight2_0075

 

 

格式化后的數(shù)據(jù)如下:

TerryLee_Silverlight2_0076

現(xiàn)在實(shí)現(xiàn)在Silverlight中獲取JSON數(shù)據(jù),并進(jìn)行反序列化,界面布局XAML就不再貼出來(lái)了,跟前面兩篇的示例一樣。在Silverlight 2中,內(nèi)置了對(duì)于JSON的支持,通過(guò)命名空間System.Runtime.Serialization.Json提供,位于System.ServiceModel.Web.dll中。

我們使用WebRequest獲取數(shù)據(jù):

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用于將對(duì)象序列化為JSON或者反序列化為對(duì)象實(shí)例,分別使用方法WriteObject和ReadObject。

TerryLee_Silverlight2_0074

至此一個(gè)完整的在Silverlight 2對(duì)于JSON的支持示例就完成了。運(yùn)行后的效果與前面的示例一樣:

TerryLee_Silverlight2_0065

結(jié)束語(yǔ)

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

NET技術(shù)一步一步學(xué)Silverlight :數(shù)據(jù)與通信之JSON,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 中文字幕一区在线观看 | 中文字幕2区 | 国内精品视频在线播放 | 久久伊人精品 | 亚1洲二区三区四区免费 | 99热国产这里只有精品99 | 色综合网站在线 | 五月婷婷在线免费观看 | 色综合天天综合网国产成人网 | 精品久久亚洲一级α | 久久无码精品一区二区三区 | 中文字幕视频二区 | 国产大片免费观看中文字幕 | 免费a级欧美黑寡妇a观看 | 97人人看 | 亚洲社区在线观看 | 久久精品中文字幕首页 | 亚洲综合久 | 韩国理伦一级毛片 | 中文字幕色 | 三级日韩 | 综合伊人久久 | 亚洲小说另类 | 91久久精品国产免费一区 | 欧美精品第1页www劲爆 | www激情com | 国内福利视频 | 日本伊人精品一区二区三区 | 亚洲天堂首页 | 欧美成人精品三级网站 | 成人在线观看一区 | 亚洲精品福利在线观看 | 亚洲精品高清视频 | 亚洲精品日韩中文字幕久久久 | 激情综合色 | 99综合在线| 午夜精品一区二区三区在线观看 | 黄色网页在线 | 激情丝袜 | 91在线精品 | 国产免费一区2区3区4区 |