对象转换为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