组件使用

关于fastjson实现时间戳Long转为时间格式化

2022-07-09  本文已影响0人  Neo_xu
import com.alibaba.fastjson.serializer.ObjectSerializer;

import java.io.IOException;
import java.lang.reflect.Type;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

public class JSONSerializer implements ObjectSerializer {
    @Override
    public void write(com.alibaba.fastjson.serializer.JSONSerializer jsonSerializer, Object o, Object o1, Type type, int i) throws IOException {
        Long longObject = (Long)o;
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime time  = Instant.ofEpochMilli((Long)longObject).atZone(ZoneId.systemDefault()).toLocalDateTime();
        jsonSerializer.write(time.format(dateTimeFormatter));
    }
}

import com.alibaba.fastjson.parser.DefaultJSONParser;
import com.alibaba.fastjson.parser.JSONLexer;
import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;

import java.lang.reflect.Type;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;


/***
 * 时间格式序列化
 */
public class JSONDateDeserializer implements ObjectDeserializer {

    @Override
    public String deserialze(DefaultJSONParser defaultJSONParser, Type type, Object o) {
        JSONLexer lexer = defaultJSONParser.getLexer();
        String timestamp = lexer.stringVal();
        Long longObject = Long.valueOf(timestamp);
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime time  = Instant.ofEpochMilli((Long)longObject).atZone(ZoneId.systemDefault()).toLocalDateTime();
        return time.format(dateTimeFormatter);
    }

    @Override
    public int getFastMatchToken() {
        return 0;
    }
}
    @ApiModelProperty(value="结束时间:时间戳,毫秒")
    @JSONField(deserializeUsing = JSONDateDeserializer.class,serializeUsing = JSONSerializer.class)
    Long endTime;
上一篇下一篇

猜你喜欢

热点阅读