JQuery二维码插件(前台生成)

JavaScriptSerializer在序列化时会将DateTime的数据序列化成类似\/Date(626543800000)\/这样的值,找了很多方法都不如意,最后在一个博客找到了完美的解决方法,地址:http://blog.calyptus.eu/seb/2011/12/custom-datetime-json-serialization/,通过自定义类型转换器的方式转换成想要的格式,转换器代码如下:

public  class  DateTimeConverter : JavaScriptConverter
{
 
     public  override  object  Deserialize(IDictionary< string , object > dictionary, Type type, JavaScriptSerializer serializer)
     {
         return  new  JavaScriptSerializer().ConvertToType(dictionary, type);
     }
 
     public  override  IDictionary< string , object > Serialize( object  obj, JavaScriptSerializer serializer)
     {
         if  (!(obj is  DateTime)) return  null ;
         return  new  CustomString(((DateTime)obj).ToString( "yyyy-MM-dd" ));
     }
 
     public  override  IEnumerable<Type> SupportedTypes
     {
         get  { return  new [] { typeof (DateTime) }; }
     }
 
     private  class  CustomString : Uri, IDictionary< string , object >
     {
         public  CustomString( string  str)
             : base (str, UriKind.Relative)
         {
         }
 
         void  IDictionary< string , object >.Add( string  key, object  value)
         {
             throw  new  NotImplementedException();
         }
 
         bool  IDictionary< string , object >.ContainsKey( string  key)
         {
             throw  new  NotImplementedException();
         }
 
         ICollection< string > IDictionary< string , object >.Keys
         {
             get  { throw  new  NotImplementedException(); }
         }
 
         bool  IDictionary< string , object >.Remove( string  key)
         {
             throw  new  NotImplementedException();
         }
 
         bool  IDictionary< string , object >.TryGetValue( string  key, out  object  value)
         {
             throw  new  NotImplementedException();
         }
 
         ICollection< object > IDictionary< string , object >.Values
         {
             get  { throw  new  NotImplementedException(); }
         }
 
         object  IDictionary< string , object >. this [ string  key]
         {
             get
             {
                 throw  new  NotImplementedException();
             }
             set
             {
                 throw  new  NotImplementedException();
             }
         }
 
         void  ICollection<KeyValuePair< string , object >>.Add(KeyValuePair< string , object > item)
         {
             throw  new  NotImplementedException();
         }
 
         void  ICollection<KeyValuePair< string , object >>.Clear()
         {
             throw  new  NotImplementedException();
         }
 
         bool  ICollection<KeyValuePair< string , object >>.Contains(KeyValuePair< string , object > item)
         {
             throw  new  NotImplementedException();
         }
 
         void  ICollection<KeyValuePair< string , object >>.CopyTo(KeyValuePair< string , object >[] array, int  arrayIndex)
         {
             throw  new  NotImplementedException();
         }
 
         int  ICollection<KeyValuePair< string , object >>.Count
         {
             get  { throw  new  NotImplementedException(); }
         }
 
         bool  ICollection<KeyValuePair< string , object >>.IsReadOnly
         {
             get  { throw  new  NotImplementedException(); }
         }
 
         bool  ICollection<KeyValuePair< string , object >>.Remove(KeyValuePair< string , object > item)
         {
             throw  new  NotImplementedException();
         }
 
         IEnumerator<KeyValuePair< string , object >> IEnumerable<KeyValuePair< string , object >>.GetEnumerator()
         {
             throw  new  NotImplementedException();
         }
 
         IEnumerator IEnumerable.GetEnumerator()
         {
             throw  new  NotImplementedException();
         }
     }
}
 然后注册一下就行了:

public  JavaScriptSerializer serializer = new  JavaScriptSerializer();
serializer.RegisterConverters( new  JavaScriptConverter[] { new  DateTimeConverter() });

  

这样使用serializer序列化的对象中包含DateTime类型的值就会被转化成yyyy-MM-dd格式的字符串


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值