1. 程式人生 > >將mysql的datetime型別資料,封裝成json時遇到的問題

將mysql的datetime型別資料,封裝成json時遇到的問題

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);