1 public class JsonDateValueProcessor implements JsonValueProcessor { 2 private String format = "yyyy-MM-dd"; 3 4 public JsonDateValueProcessor() { 5 super(); 6 } 7 8 public JsonDateValueProcessor(String format) { 9 super(); 10 this.format = format; 11 } 12 @Override 13 public Object processArrayValue(Object value, JsonConfig jsonConfig) { 14 String[] obj = {}; 15 if (value instanceof Timestamp[]){ ----->Date 類型 Timestamp 全改 Date 16 SimpleDateFormat sf = new SimpleDateFormat(format); 17 Timestamp[] dates = (Timestamp[]) value; 18 obj = new String[dates.length]; 19 for (int i=0; i<dates.length; i++){ 20 obj[i] = sf.format(dates[i]); 21 } 22 } 23 return obj; 24 } 25 26 @Override 27 public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) { 28 if (value instanceof Timestamp) { 29 String str = new SimpleDateFormat(format).format((Timestamp) value); 30 return str; 31 } 32 return value.toString(); 33 } 34 35 public String getFormat() { 36 return format; 37 } 38 39 public void setFormat(String format) { 40 this.format = format; 41 } 42 43 }
使用:
1 //日期格式按此進行json轉換 2 JsonConfig jsonConfig = new JsonConfig(); 3 jsonConfig.registerJsonValueProcessor(Timestamp.class, new JsonDateValueProcessor());
可能異常:(參考:http://www.tuicool.com/articles/2qYfMb)
1. java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException
解決辦法:需要導入commons-lang-2.5.jar包
2. java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
解決辦法:需要導入 commons-logging-1.1.1.jar 包
3 . java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ListOrderedMap
解決辦法:需要導入 commons-collections-3.1.jar 包
使用json時需要用到的jar包有以下幾個(版本不限):
commons-beanutils-1.7.0.jar
commons-collections-3.1.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
ezmorph-1.0.3.jar
json-lib-2.2.2-jdk15.jar