第一篇博客,我来抛个砖吧。
在做网站开发时,我们经常会用到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 }
第一篇,水平有限,大家多多包涵,凑合看吧。