將mysql的datetime型別資料,封裝成json時遇到的問題
阿新 • • 發佈:2019-02-12
1.首先,直接使用jdbc將資料取資料,注意使用getTimestamp,而不是getTime方法
//在資料庫中的時間型別時datetime,在此處要通過getTimeStamp將值取出來
vo.setDepCreateTime(rs.getTimestamp(8));
2.直接呼叫JSONArray.fromObject(list),裝換成JSON物件時,注意:如果list中的變數含有java.util.date物件時,則需要使用JSONConfig進行處理。JsonDateValueProcessor類的程式碼如下:
package util; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import net.sf.json.JsonConfig; import net.sf.json.processors.JsonValueProcessor; public class JsonDateValueProcessor implements JsonValueProcessor { private String pattern = "yyyy-MM-dd HH:mm:ss"; //定義兩個建構函式,通過第二個建構函式可以自定義時間格式化字串 public JsonDateValueProcessor() { super(); } public JsonDateValueProcessor(String format) { this.pattern = format; } public Object processArrayValue(Object arg0, JsonConfig arg1) { // TODO Auto-generated method stub return process(arg0); } public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) { // TODO Auto-generated method stub return process(arg1); } private Object process(Object val){ if(val instanceof Date&& val!=null){ SimpleDateFormat sdf=new SimpleDateFormat(this.pattern,Locale.CHINESE); System.out.println("date format by valueProcess:"+sdf.format(val)); return sdf.format(val); }else return val==null?"":val.toString(); } }
在jsonarray進行轉換時,這樣呼叫:
JsonConfig config = new JsonConfig();
config.registerJsonValueProcessor(Date.class,new JsonDateValueProcessor());
arr=JSONArray.fromObject(result,config);