Silverlight JSON通信

Silverlight JSON通信,第1张

概述  首先我们建立服务端,以便能够提供JSON格式的数据。在这里为了产生JSON格式的数据,我们借助于一个开源项目Json.NET。建立两个实体类型: public class Post{ public int Id { get; set; } public string Title { get; set; } public string Author {  

首先我们建立服务端,以便能够提供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",new Post{ ID=3,Title="一步一步学Silverlight 2系列(11):数据绑定",new Post{ ID=4,Title="一步一步学Silverlight 2系列(10):使用用户控件",new Post{ ID=5,Title="一步一步学Silverlight 2系列(9):使用控件模板",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,查看一下生成的数据格式:

对这些数据格式化一下,看起来更明显,这里推荐一个在线JsON数据格式化工具http://www.curiousconcept.com/jsonformatter/:

格式化后的数据如下:

现在实现在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。

至此一个完整的在Silverlight 2对于JsON的支持示例就完成了。

 

http://www.cnblogs.com/Terrylee/archive/2008/03/10/Silverlight2-step-by-step-part15-data-and-communication-JSON.html

总结

以上是内存溢出为你收集整理的Silverlight JSON通信全部内容,希望文章能够帮你解决Silverlight JSON通信所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存