JSON转换为JAVA对象及日期格式转换处理


1.JSON日期格式转换

默认JSON对DATE类型会转换成一个多属性对象, 而不是单独的一个字符串, 在某些应用处理上不是很方便,  可以利用JsonValueProcessor来实现日期的转换.

 默认格式:

"lastUpdate": {
                "date": 29,
                "day": 3,
                "hours": 14,
                "minutes": 46,
                "month": 1,
                "seconds": 41,
                "time": 1330498001000,
                "timezoneOffset": -480,
                "year": 112
            },

转换后格式:

"lastUpdate": "2012-02-29 14:46:41"

自定义一个日期处理器:

  1. import java.text.SimpleDateFormat;  
  2. import java.util.Date;  
  3.   
  4. import net.sf.json.JsonConfig;  
  5. import net.sf.json.processors.JsonValueProcessor;  
  6.   
  7. /**  
  8.  * JSON日期格式转换 
  9.  *  
  10. */  
  11. public class DateJsonValueProcessor implements JsonValueProcessor  
  12. {  
  13.     private String format = "yyyy-MM-dd HH:mm:ss";  
  14.   
  15.     public DateJsonValueProcessor()  
  16.     {  
  17.   
  18.     }  
  19.   
  20.     public DateJsonValueProcessor(String format)  
  21.     {  
  22.   
  23.         this.format = format;  
  24.     }  
  25.   
  26.     public Object processArrayValue(Object value, JsonConfig jsonConfig)  
  27.     {  
  28.   
  29.         String[] obj = {};  
  30.         if (value instanceof Date[])  
  31.         {  
  32.             SimpleDateFormat sf = new SimpleDateFormat(format);  
  33.             Date[] dates = (Date[]) value;  
  34.             obj = new String[dates.length];  
  35.             for (int i = 0; i < dates.length; i++)  
  36.             {  
  37.                 obj[i] = sf.format(dates[i]);  
  38.             }  
  39.         }  
  40.         return obj;  
  41.     }  
  42.   
  43.     public Object processObjectValue(String key, Object value, JsonConfig jsonConfig)  
  44.     {  
  45.   
  46.         if (value instanceof Date)  
  47.         {  
  48.             String str = new SimpleDateFormat(format).format((Date) value);  
  49.             return str;  
  50.         }  
  51.         return value;  
  52.     }  
  53.   
  54.     public String getFormat()  
  55.     {  
  56.   
  57.         return format;  
  58.     }  
  59.   
  60.     public void setFormat(String format)  
  61.     {  
  62.   
  63.         this.format = format;  
  64.     }  
  65.   
  66. }  

转换调用代码:

  1. JsonConfig jsonConfig = new JsonConfig();  
  2. jsonConfig.registerJsonValueProcessor(java.util.Date.classnew DateJsonValueProcessor());  
  3. JSONObject jsonObj = JSONObject.fromObject(bean, jsonConfig);  
  4. return jsonObj.toString();  
  • 1
  • 2
  • 下一页

相关内容