1. 程式人生 > >JSONObject.fromObject() 轉string時,實體裡面的時間錯亂的問題

JSONObject.fromObject() 轉string時,實體裡面的時間錯亂的問題

 

  在把要入庫的資料實體轉成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;
import
java.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; } @Override
public 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()+""

 

 

 這樣時間就不會錯亂了。趕緊記錄一下,