帶有java.util.Date型別的實體類轉成json物件
有時專案中會遇到這樣的場景:
實體類需要轉換成json,然後傳給前臺或者其他專案裡,如果實體類裡包含java.util.Date型別的屬性,轉換後,會變成這樣(如果沒做任何處理)
"receiveTime": { "date": 23, "day": 1, "hours": 17, "minutes": 51, "month": 4, "seconds": 21, "time": 1463997081061, "timezoneOffset": -480, "year": 116 }
然而實體類裡又不想把日期型別的屬性改成字串型別,我們可以寫一個方法,來實現這一功能
public class JsonDateValueProcessor implements JsonValueProcessor { private String format = DateUtils.defaultDateTimeFormat; @Override public Object processArrayValue(Object value, JsonConfig config) { return process(value); } @Override public Object processObjectValue(String arg0, Object value, JsonConfig config) { return process(value); } private Object process(Object value){ //遇到型別為日期的,就自動轉換成“yyyy-MM-dd HH:mm:ss”格式的字串 if(value instanceof Date){ SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.UK); return sdf.format(value); } return value == null ? "" : value.toString(); } }
實體類需要轉換的地方
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Date.class , new JsonDateValueProcessor());
JSONObject signalJson = JSONObject.fromObject(signal,jsonConfig);
這樣就完美的解決了問題
結果如下:
"receiveTime": "2016-05-23 18:15:06"