JSONObject.fromObject() 轉string時,實體裡面的時間錯亂的問題
阿新 • • 發佈:2018-12-24
在把要入庫的資料實體轉成JSON字串發給kafka的時候,出現了問題,轉換完以後,就變成這樣子的了,真的是第一次見到這種,真的是長見識了
然後百度了一下:https://www.cnblogs.com/LiuChunfu/p/4917934.html,找到了大佬的解決方式,
import net.sf.json.JsonConfig; import net.sf.json.processors.JsonValueProcessor; import java.text.SimpleDateFormat; import java.util.Date; importjava.util.Locale; public class JsonDateValueProcessor implements JsonValueProcessor { private String format ="yyyy-MM-dd HH:mm:ss"; public JsonDateValueProcessor() { super(); } public JsonDateValueProcessor(String format) { super(); this.format = format; } @Overridepublic Object processArrayValue(Object paramObject, JsonConfig paramJsonConfig) { return process(paramObject); } @Override public Object processObjectValue(String paramString, Object paramObject, JsonConfig paramJsonConfig) {return process(paramObject); } private Object process(Object value){ if(value instanceof Date){ SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.CHINA); return sdf.format(value); } return value == null ? "" : value.toString(); } }
然後應用
JsonConfig jsonConfig = new JsonConfig(); jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor()); JSONObject json = new JSONObject(); //實體轉為JSON String s = json.fromObject(moveCarEntity, jsonConfig).toString();
雖然能解決問題,但是不能滿足我這邊的需求哈,我這邊要求傳過去的資料要為時間戳,而不是"yyyy-MM-dd HH:mm:ss",所以這種方式不適合。
解決辦法:
1.將實體的時間型別為DAte該為String
2.然後建立時間我一般都是寫new Date(),這樣得到的:Mon Dec 24 10:14:44 CST 2018,可以寫成這樣new Date().getTime()+""
這樣時間就不會錯亂了。趕緊記錄一下,