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()+""

 

 

 这样时间就不会错乱了。赶紧记录一下,

 

posted @ 2018-12-24 10:18  sflkj  阅读(4692)  评论(0编辑  收藏  举报