JAVA物件轉換為JSON及日期格式轉換處理
預設JSON對DATE型別會轉換成一個多屬性物件, 而不是單獨的一個字串, 在某些應用處理上不是很方便, 可以利用JsonValueProcessor來實現日期的轉換.
方法:
1.增加一個DateJsonValueProcessor類,如下:
import java.text.SimpleDateFormat;
import java.util.Date;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
/**
* JSON日期格式轉換
*
*/
public class DateJsonValueProcessor implements JsonValueProcessor{
//注意日期格式要求
private String format = "yyyy-MM-dd";
public DateJsonValueProcessor(){
}
public DateJsonValueProcessor(String format){
this.format = format;
}
@Override
public Object processArrayValue(Object value, JsonConfig jsonConfig){
String[] obj = {};
if (value instanceof Date[]){
SimpleDateFormat sf = new SimpleDateFormat(format);
Date[] dates = (Date[]) value;
obj = new String[dates.length];
for (int i = 0; i < dates.length; i++){
obj[i] = sf.format(dates[i]);
}
}
return obj;
}
@Override
public Object processObjectValue(String key, Object value, JsonConfig jsonConfig){
if (value instanceof Date){
String str = new SimpleDateFormat(format).format((Date) value);
return str;
}
return value;
}
public String getFormat(){
return format;
}
public void setFormat(String format){
this.format = format;
}
}
轉換呼叫程式碼:
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor());
JSONArray jsonArray=JSONArray.fromObject(bean, jsonConfig);
其中 bean 指的是你需要轉為json的java物件。
需要注意的是:程式碼中的 java.util.Date.class 要與物件中日期欄位的型別一致,比如物件中的欄位為 private Time openAccountDate; 那麼程式碼中 java.util.Date.class 應該改為 java.sql.Timestamp.class