关于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;