zoukankan      html  css  js  c++  java
  • JavaScriptSerializer 在序列化时间datetime类型是会有时区差异

    JavaScriptSerializer  与    DataContractJsonSerializer(命名空间System.ServiceModel.Web及System.Runtime.Serialization)


    JavaScriptSerializer   在序列化时间datetime类型是会有时区差异,JavaScriptSerializer 会将时间转成utc类型

    DataContractJsonSerializer  在序列化时间时对时间类型进行了判断,如果为local类型,则加上时区

    因此推荐使用DataContractJsonSerializer 序列化

     1     public class JsonHelper
     2     {
     3         public static string Serialize<T>(T data)
     4         {
     5             System.Runtime.Serialization.Json.DataContractJsonSerializer serializer =
     6             new System.Runtime.Serialization.Json.DataContractJsonSerializer(data.GetType());
     7             using (MemoryStream ms = new MemoryStream())
     8             {
     9                 serializer.WriteObject(ms, data);
    10                 return Encoding.UTF8.GetString(ms.ToArray());
    11             }
    12         }
    13 
    14         public static T Deserialize<T>(string json)
    15         {
    16             T obj = Activator.CreateInstance<T>();
    17             using (MemoryStream ms =
    18             new MemoryStream(Encoding.UTF8.GetBytes(json)))
    19             {
    20                 System.Runtime.Serialization.Json.DataContractJsonSerializer serializer =
    21                 new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());
    22                 return (T)serializer.ReadObject(ms);
    23             }
    24         }
    25 
    26     }
  • 相关阅读:
    linux学习 建立静态库,动态库,写简单的makefile
    C++中顶层const和底层const
    BDB (Berkeley DB)数据库简单介绍(转载)
    Java中Map的使用
    Spring MVC 3 深入总结
    nvl,空时的推断和取值
    java堆栈 (转)
    mybatis--面向接口编程
    HDU 4888
    socket编程——一个简单的样例
  • 原文地址:https://www.cnblogs.com/xusion/p/2698996.html
Copyright © 2011-2022 走看看