silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了一步一步学Silverlight 2系列(16):数据与通信之JSON大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight 2系列》文章带您快速进入silverlight 2开发。

概述

Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic,Visual C#,IronRuby,Ironpython,对JSON、Web service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight 2系列》@L_262_2@带您快速进入silverlight 2开发。
本文将简单介绍在Silverlight 2中对于JSON的支持

简单示例

在本文中我们仍然采用前面两篇@L_262_2@中用过的显示最新随笔这样一个示例(举一反三嘛:)),最终完成的效果如下图所示:

一步一步学Silverlight 2系列(16):数据与通信之JSON

 
首先我们建立服务端,以便能够提供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,查看一下生成的数据格式:

一步一步学Silverlight 2系列(16):数据与通信之JSON

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

一步一步学Silverlight 2系列(16):数据与通信之JSON

 
格式化后的数据如下:

一步一步学Silverlight 2系列(16):数据与通信之JSON

 
现在实现在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系列(16):数据与通信之JSON

 
至此一个完整的在Silverlight 2对于JSON的支持示例就完成了。运行后的效果与前面的示例一样:

一步一步学Silverlight 2系列(16):数据与通信之JSON

 

结束语

本文简单介绍了在Silverlight 2中对于JSON的支持,DataContractJsonserializer用于将对象序列化为JSON或者反序列化为对象实例,你可以从 这里下载本文示例代码

大佬总结

以上是大佬教程为你收集整理的一步一步学Silverlight 2系列(16):数据与通信之JSON全部内容,希望文章能够帮你解决一步一步学Silverlight 2系列(16):数据与通信之JSON所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。