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"

自定义一个日期处理器:

DateJsonValueProcessor是实现了一个JsonValueProcessor接口(两种方式)

[java]  view plain copy
  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. }  

或:

[java]  view plain copy
  1. package org.ymm.util;  
  2.   
  3. import java.text.SimpleDateFormat;  
  4. import net.sf.json.JsonConfig;  
  5. import net.sf.json.processors.JsonValueProcessor;  
  6.   
  7. public class DateJsonValueProcessor implements JsonValueProcessor  
  8. {  
  9.       
  10.     private String format;  
  11.     public DateJsonValueProcessor(String format){  
  12.         this.format = format;  
  13.     }  
  14.       
  15.     public Object processArrayValue(Object value, JsonConfig jsonConfig)  
  16.     {  
  17.         return null;  
  18.     }  
  19.   
  20.     public Object processObjectValue(String key, Object value, JsonConfig jsonConfig)  
  21.     {  
  22.         if(value == null)  
  23.         {  
  24.             return "";  
  25.         }  
  26.         if(value instanceof java.sql.Timestamp)  
  27.         {  
  28.             String str = new SimpleDateFormat(format).format((java.sql.Timestamp)value);  
  29.             return str;  
  30.         }  
  31.         if (value instanceof java.util.Date)  
  32.         {  
  33.             String str = new SimpleDateFormat(format).format((java.util.Date) value);  
  34.             return str;  
  35.         }  
  36.           
  37.         return value.toString();  
  38.     }  
  39. }  

转换调用代码:


	public String queryEmpAll() throws IOException{
		System.out.println("queryEmpAll!!!!!!!!!!!!!!!!!!!!!!!");	
//		PrintWriter out=ServletActionContext.getResponse().getWriter();
		
		JsonConfig jsonConfig = new JsonConfig();  
		jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor()); 
		jsonConfig.registerJsonValueProcessor(java.sql.Timestamp.class, new JsonDateValueProcessor()); 
		
		Map map=new HashMap();
		map.put("total", 3);
		map.put("data", ies.getAll());
		
		JSONObject jn=JSONObject.fromObject(map,jsonConfig);
		
		System.out.println(jn.toString());
//		out.print(jn.toString());
		return null;
	}











GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 4 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐