zoukankan      html  css  js  c++  java
  • Json(2)-DataContractJsonSerializer

    public static void DataContractSerializeDemo()
            {
                User user = new User { UserID = 1, UserName = "单车", Salary = 1000, CreateTime = DateTime.Now.AddYears(-2), Birthday = DateTime.Now.AddYears(-2), Urls = new List<string> { "http://zhoufoxcn.blog.51cto.com", "http://blog.csdn.net/zhoufoxcn" } };
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(User));
                string result = string.Empty;
                using(MemoryStream mstream=new MemoryStream())
                {
                    serializer.WriteObject(mstream,user);
                    result = Encoding.UTF8.GetString(mstream.ToArray());
                    Console.WriteLine("序列化结果为:{0},{1}",result,result.Length);
                }

                byte[] bytes = Encoding.UTF8.GetBytes(result);
                using(MemoryStream mstreamD=new MemoryStream(bytes))
                {
                    User userd=serializer.ReadObject(mstreamD) as User;
                    Console.WriteLine("反序列化的结果为:{0},{1},{2},{3}",userd.UserName,userd.Birthday,userd.CreateTime,userd.Salary);
                }

            }

    测试结果:

    ------ Test started: Assembly: JsonDemo.exe ------

    序列化结果为:{"Birthday":"/Date(1322961529078+0800)/","CreateTime":"/Date(1322961529078+0800)/","Urls":["http://zhoufoxcn.blog.51cto.com","http://blog.csdn.net/zhoufoxcn"],"UserID":1,"UserName":"单车"},195
    反序列化的结果为:单车,2011-12-4 9:18:49,2011-12-4 9:18:49,0

    1 passed, 0 failed, 0 skipped, took 0.59 seconds (Ad hoc).

    和上篇中使用Newtonsoft.Json相比,时间格式的序列化是不同的。

    总结:

    在.NET中有三种常用的JSON序列化的类,分别是System.Web.Script.Serialization.JavaScriptSerializer类、System.Runtime.Serialization.Json.DataContractJsonSerializer类和Newtonsoft.Json.JsonConvert类。

    1.System.Web.Script.Serialization.JavaScriptSerializer类是.NET类库中自带的一种JSON序列化实现,在.NET Framework3.5及以后版本中可以使用这个类,这个类位于System.Web.Extensions.dll中,使用这个类是必须添加对这个dll的引用。

    2.System.Runtime.Serialization.Json.DataContractJsonSerializer类位于System.ServiceModel.Web.dll中,使用这个类时除了需要添加对System.ServiceModel.Web.dll的引用之外,还需要添加System.Runtime.Serialization.dll的引用,注意这个类也是在.NET Framework3.5及以后版本中可以使用。

    3.Newtonsoft.Json.JsonConvert类是非微软提供的一个JSON序列化和反序列的开源免费的类库(下载网址是:http://www.codeplex.com/json/),它提供了更灵活的序列化和反序列化控制,并且如果你的开发环境使用的是.NET Framework3.5及以后版本的话,你就可以使用Linq to JSON,这样一来面对一大段的数据不必一一解析,你可以使用Linq to JSON解析出你关心的那部分即可,非常方便。

    以上两篇是参见http://zhoufoxcn.blog.51cto.com/792419/517093的文章后总结的,原文请查阅http://zhoufoxcn.blog.51cto.com/792419/517093

  • 相关阅读:
    O(big oh) (big omega) (big theta)
    Ex 7_21 在一个流网络中,一条边被称为是临界的...第十三次作业
    Ex 7_17 考虑如下的网络(其中数字为对应边的容量)...第十三次作业
    Expm 10_2 实现Ford-Fulkerson算法,求出给定图中从源点s到汇点t的最大流,并输出最小割。
    pat1009
    pat1008
    pat1007
    pat1006
    pat1005
    pat1004
  • 原文地址:https://www.cnblogs.com/flyaway100/p/3456936.html
Copyright © 2011-2022 走看看