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()+""
这样时间就不会错乱了。赶紧记录一下,