JavaScriptSerializer的简单运用

     平时在我们在很多项目中码砖时都会遇到各种需求,比如将实体信息转化成Json了后传到网页界面上绑定.或是从界面获取到一个Json对象,要将json转化为实体再做别的操作.
我们可以定义一个公共类出来,写两个方法,用于json与实体类之间的两互转换.好了,屁话不多说了.小二,上代码.....
利用.net自带的JavaScriptSerializer类就能很轻松的实现我们想要的东东.
* 对于JavaScriptSerializer类,我们先要引用一下using System.Web.Script.Serialization这个命明空间.
* 在网上简单的查了一下这个类,微软的解释如下:
* 为启用 AFAX 的应用程序提供序列化和反序列化功能.
* 其实我还真没搞明白这句话是什么意思啊思密达...

* 新建一个Web网站项目,再添加一个公共类,名字就叫:CommonSerializer,这个公共类里面就两个方法,如下:

using System;
using System.Web.Script.Serialization;
namespace WebSerializerDemo
{
    public class CommonSerializer
    {
        //既然是公共的方法,当然用泛型啦..哈哈(笑二了)
        public static string SerializerToJson<T>(T t)
        {
            //如果传过来的实体类为空..返回一个空字符串的回去.
            if (t == null) return string.Empty;

            //实例一个JavaScriptSerializer对象
            JavaScriptSerializer serializer = new JavaScriptSerializer();

            //实例一个SB对象,用于接收实体序列化后的结果.
            System.Text.StringBuilder result=new System.Text.StringBuilder();

            //执行序列化...
            serializer.Serialize(t, result);
            return result.ToString();
        }

        //将传过来的Json对象反序列化成我们指定的实体
        public static T SerializerToEntity<T>(string json)
        {
            //检查一下json是否为空
            if (!string.IsNullOrEmpty(json))
            {
                try
                {
                    //实例一个JavaScriptSerializer对象
                    JavaScriptSerializer serializer = new JavaScriptSerializer();

                    //执行反序列化并返回一个指定类型的实体
                    return serializer.Deserialize<T>(json);
                }
                catch
                {
                    //如果给定的Json字符串与给定的实体无法进行反序列化,根据给定的T类型返回相应的类型
                    //即如果T是引用类型,会返回一个null,如果是值类型,则返回一个0,如果是结构体,则返回初始化为0或为空的结构体成员的结构体
                    return default(T);
                }
            }
            else
            {
                return default(T);
            }
        }
    }
}

Over..

posted on 2013-03-29 16:48  to to  阅读(795)  评论(0)    收藏  举报

导航