SilverLight学习笔记--Silverligh之Json的通讯传递

    JSON是一种轻量级的数据传输类型,它可以通过序列化把一个简单对象转换为一个简单的字符串,在网络中进行传输,然后在客户端进行反序列化,得到原始对象.功能上和XML差不多,只是它的体积小,在客户端解析方便,所以被广泛使用.
   我们可以使用Silverlight提供的三个类来完成JSON数据的传递和接收。它们是:   

      1 、DataContractJsonSerializer (位于 System.Runtime.Serialization.Json)
      
2 、JsonObject (位于System.Json,将JSON数据流转换成为可读写的对象)
      
3 、JsonArray (位于System.Json, 对JSON数据流转换成为JsonObject数组形式,可支持LINQ查询)

     注:如果要引用System.Runtime.Serialization.Json名空间里的Json,则必须也引用System.ServiceModel,否则Json会无法使用。在本例中,我们将使用它来进行示例。
     下面我们一起来学习在Silverlight中如何从服务器端向客户端传递Json数据。  
     新建一个Silverlight应用程序。命名为:SLJson
 (一)准备工作
  在这里,我们完成三种情况的Json数据传递。

    1 、一个Person类(其属性均为简单类型:String类型)
   
2 、Customers类,它是Person类的一个List。
   
3 、一个PersonT类(它包含另一个类 Address)

  我们要传递这三种情况的类对象实例到客户端并显示出来。
  所以,在此,我们首先要在服务器端和客户端分别建立上面的三个类。
  Person类
  服务器端代码定义如下:

Code

  客户端代码定义如下:

Code

  Customers类
  服务器端代码定义如下:

Code

  客户端代码定义如下:

Code

  PersonT类
  服务器端代码定义如下:

Code

  客户端代码定义如下:

Code

  PersonT类内含的Address类
  服务器端代码定义如下:

Code

  客户端代码定义如下: 

Code

  至此,我们的应用程序如下图:
                        SilverLight学习笔记--Silverligh之Json的通讯传递
 (二) 实现Json数据的传递。

 1、建立用户界面
 Page.xaml代码如下:

 

< UserControl x:Class = " SLJson.Page "
    xmlns
= " http://schemas.microsoft.com/winfx/2006/xaml/presentation "  
    xmlns:x
= " http://schemas.microsoft.com/winfx/2006/xaml "  
    Width
= " 400 "  Height = " 400 " >
 
< StackPanel Width = " 400 "  Height = " 400 "  Background = " Wheat " >
     
< TextBlock Text = " 获取的数据如下 "  TextAlignment = " Center "  Foreground = " Red "  Margin = " 2 "  FontSize = " 16 " ></ TextBlock >
     
< ListBox x:Name = " lstReturn "  Width = " 350 "  Height = " 220 "  Margin = " 6 " ></ ListBox >
     
< Button  x:Name = " btnGetPerson "  Width  = " 200 "  Height = " 25 "  Content = " 获取Person类数据 "  Margin = " 8 "   Click = " btnGetPerson_Click "   ></ Button >
     
< Button  x:Name = " btnGetPersonT "  Width = " 200 "  Height = " 25 "  Content = " 获取PersonT类数据 "  Margin = " 8 "  Click = " btnGetPersonT_Click " ></ Button >
     
< Button  x:Name = " btnGetCustomer "  Width = " 200 "  Height = " 25 "  Content = " 获取Customer类数据 "  Margin = " 8 "  Click = " btnGetCustomer_Click " ></ Button >
     
 
</ StackPanel >
</ UserControl >

 用户界面如下图:

                        SilverLight学习笔记--Silverligh之Json的通讯传递 
2、服务器端:我们新建一个Handler(在本例命名为:CustomerJsonHandler.ashx)专门负责响应客户端发来的请求,在服务器端生成Json格式的结果数据并返回给客户端。

  2.1、生成将要传递的类对象实例 

Code

  2.2、并把它们序列化成Json格式的数据

Code

  2.3、向客户端传递

 

            context.Response.ContentType  =   " text/plain " ;
            context.Response.Write(strJSON);
服务器端CustomerJsonHandler.ashx全部代码如下:

 

Code

3、客户端:
Page.xaml.cs中进行处理,完成的主要工作包括
 3.1、接收来自服务器端的Json格式的数据。
 3.2、反序列化这些数据,生成对应的类对象。
 3.3、解析和显示数据内容
客户端Page.xaml.cs全部代码如下:

 

Code

运行后的效果如下:
                        SilverLight学习笔记--Silverligh之Json的通讯传递

前往:Silverlight学习笔记清单

本文程序在Silverlight2.0和VS2008环境中调试通过。本文参照了部分网络资料,希望能够抛砖引玉,大家共同学习。
(转载本文请注明出处)

你可能感兴趣的:(silverlight)