對象轉換為json時涉及日期格式的處理


第一篇博客,我來拋個磚吧。

在做網站開發時,我們經常會用到net.sf.json.JSONObject.fromObject()或net.sf.json.JSONArray.fromObject()方法將一個對象轉換為json對象返回到前端頁面。如果object中含有日期類型的字段,在轉換的時候日期類型的轉換結果通常不是我們要的,如果想轉換為yyyy-MM-dd HH:mm:ss格式的話要怎么做呢?

網上是有這個問題的解決辦法的,求助網絡,發現fromObject有個重載的函數,一個是一個參數的,就只傳對象,另外一個是兩個參數的,需要傳一個jsonconfig,創建jsoncofig代碼如下

1 net.sf.json.JsonConfig config = new net.sf.json.JsonConfig();
2 config.registerJsonValueProcessor(java.sql.Timestamp.class, new DateJsonValueProcessor("yyyy-MM-dd HH:mm:ss"));

而DateJsonValueProcessor的寫法如下,主要需要實現兩個函數processObjectValue和processArrayValue整個類的代碼如下:

 1 package yourpackage;
 2 
 3 import net.sf.json.processors.JsonValueProcessor;
 4 
 5 public class DateJsonValueProcessor implements JsonValueProcessor{
 6     /** 
 7      * 字母 日期或時間元素 表示 示例 <br> 
 8      * G Era 標志符 Text AD <br> 
 9      * y 年 Year 1996; 96 <br> 
10      * M 年中的月份 Month July; Jul; 07 <br> 
11      * w 年中的周數 Number 27 <br> 
12      * W 月份中的周數 Number 2 <br> 
13      * D 年中的天數 Number 189 <br> 
14      * d 月份中的天數 Number 10 <br> 
15      * F 月份中的星期 Number 2 <br> 
16      * E 星期中的天數 Text Tuesday; Tue<br> 
17      * a Am/pm 標記 Text PM <br> 
18      * H 一天中的小時數(0-23) Number 0 <br> 
19      * k 一天中的小時數(1-24) Number 24<br> 
20      * K am/pm 中的小時數(0-11) Number 0 <br> 
21      * h am/pm 中的小時數(1-12) Number 12 <br> 
22      * m 小時中的分鍾數 Number 30 <br> 
23      * s 分鍾中的秒數 Number 55 <br> 
24      * S 毫秒數 Number 978 <br> 
25      * z 時區 General time zone Pacific Standard Time; PST; GMT-08:00 <br> 
26      * Z 時區 RFC 822 time zone -0800 <br> 
27      */
28     public static final String Default_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss";
29     private java.text.DateFormat dateFormat;
30     
31     /** 
32      *
33      */
34     public DateJsonValueProcessor(String datePattern) {
35         try {
36             dateFormat = new java.text.SimpleDateFormat(datePattern);
37         } catch (Exception e) {
38             dateFormat = new java.text.SimpleDateFormat(Default_DATE_PATTERN); 
39         }
40     }
41     
42     /* 
43      * (non-Javadoc) 
44      * @see 
45      * net.sf.json.processors.JsonValueProcessor#processArrayValue(java.lang 
46      * .Object, net.sf.json.JsonConfig) 
47      */
48     @Override
49     public Object processArrayValue(Object value, net.sf.json.JsonConfig jsonConfig) {
50         return process(value);
51     }
52     
53     /* 
54      * (non-Javadoc) 
55      * @see 
56      * net.sf.json.processors.JsonValueProcessor#processObjectValue(java.lang 
57      * .String, java.lang.Object, net.sf.json.JsonConfig) 
58      */
59     @Override
60     public Object processObjectValue(String key, Object value,net.sf.json.JsonConfig jsonConfig) {
61         return process(value);
62     }
63     
64     private Object process(Object value) {
65         if (value == null) {
66             return "";
67         } else {
68             return dateFormat.format((java.sql.Timestamp) value);
69         }
70     } 
71 }

第一篇,水平有限,大家多多包涵,湊合看吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM