第一篇博客,我來拋個磚吧。
在做網站開發時,我們經常會用到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 }
第一篇,水平有限,大家多多包涵,湊合看吧。