目录
问题演示
出现的为问题如下:
去掉这个createTime和updateTIme中的000,也就是/1000,这里其实有很多方法,可以在构造的时候/1000,但这并不是最好的方法,通过重写JsonSerializer<T>中的serialize方法,再到想要的成员上加上注解即可:
通过这种方式解决这个问题是比较好的方法
解决方法
关键代码如下:
Date2LongSerializer.java
package selldemo.demo.utils.serializer;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.util.Date;
public class Date2LongSerializer extends JsonSerializer<Date> {
@Override
public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
jsonGenerator.writeNumber(date.getTime() / 1000);
}
}
OrderDTO.java
package selldemo.demo.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;
import selldemo.demo.dataobject.OrderDetail;
import selldemo.demo.enums.OrderStatusEnum;
import selldemo.demo.enums.PayStatusEnum;
import selldemo.demo.utils.serializer.Date2LongSerializer;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@Data
public class OrderDTO {
private String orderId;
private String buyerName;
private String buyerPhone;
private String buyerAddress;
private String buyerOpenid;
private BigDecimal orderAmount;
//订单状态 默认为下单
private Integer orderStatus = OrderStatusEnum.NEW.getCode();
//支付状态 默认为0未支付
private Integer payStatus = PayStatusEnum.WAIT.getCode();
@JsonSerialize(using = Date2LongSerializer.class)
private Date createTime;
@JsonSerialize(using = Date2LongSerializer.class)
private Date updateTime;
List<OrderDetail> orderDetailList;
}