fastjson对Date的处理

对日期的序列化:

一种方法是通过注解

Java代码

?
1
2
@JSONField  (format= "yyyy-MM-dd HH:mm:ss" )  
public  Date birthday;

另一种是通过SerializeConfig:

Java代码  收藏代码

?
1
2
3
4
5
6
private  static  SerializeConfig mapping =  new  SerializeConfig();  
private  static  String dateFormat;  
static  {  
     dateFormat =  "yyyy-MM-dd HH:mm:ss" ;  
     mapping.put(Date. class new  SimpleDateFormatSerializer(dateFormat));  
}

json字符串中使用单引号:

String text = JSON.toJSONString(object, SerializerFeature.UseSingleQuotes);

 

字段显示不同的key:

?
1
2
3
4
5
6
7
public  class  User {  
     @JSONField (name= "ID" )  
     public  int  getId() { ... }  
}  
    
User user = ...;  
JSON.toJSONString(user);  // {"ID":001}

自定义序列化代码示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public  class  JsonUtil {  
     private  static  SerializeConfig mapping =  new  SerializeConfig();  
     private  static  String dateFormat;  
     static  {  
         dateFormat =  "yyyy-MM-dd HH:mm:ss" ;  
     }  
   
     /** 
      * 默认的处理时间 
      *  
      * @param jsonText 
      * @return 
      */  
     public  static  String toJSON(Object jsonText) {  
         return  JSON.toJSONString(jsonText,  
                 SerializerFeature.WriteDateUseDateFormat);  
     }  
   
     /** 
      * 自定义时间格式 
      *  
      * @param jsonText 
      * @return 
      */  
     public  static  String toJSON(String dateFormat, String jsonText) {  
         mapping.put(Date. class new  SimpleDateFormatSerializer(dateFormat));  
         return  JSON.toJSONString(jsonText, mapping);  
     }  
}

自定义反序列化示例:

先自定义一个日期解析类:

Java代码  收藏代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public  class  MyDateFormatDeserializer  extends  DateFormatDeserializer {  
   
         private  String myFormat;  
   
         public  MyDateFormatDeserializer(String myFormat) {  
             super ();  
             this .myFormat = myFormat;  
         }  
   
         @Override  
         protected  <Date> Date cast(DefaultJSONParser parser, Type clazz, Object fieldName, Object val) {  
             if  (myFormat ==  null ) {  
                 return  null ;  
             }  
             if  (val  instanceof  String) {  
                 String strVal = (String) val;  
                 if  (strVal.length() ==  0 ) {  
                     return  null ;  
                 }  
   
                 try  {  
                     return  (Date)  new  SimpleDateFormat(myFormat).parse((String)val);  
                 catch  (ParseException e) {  
                     throw  new  JSONException( "parse error" );  
                 }  
             }  
             throw  new  JSONException( "parse error" );  
         }  
     }

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值