一、时间格式转换
场景:
后端在数据类型为Date的情况下,返回的时间戳为毫秒格式为:12345678987000,多了三个0,而前端需要的是秒单位的时间戳,所以后端需要把Date转为Long去掉三个0
数据传输方向:
后端==》前端
1. 转换工具类
继承JsonSerializer<T>类并重写方法
public class Date2LongSerialize extends JsonSerializer<Date> {
@Override
public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
jsonGenerator.writeNumber(date.getTime()/1000);
}
}
2. Date属性字段添加注解
该方法比较繁琐,需要每个类的每个Date属性上添加注解,不推荐
在传输类(DTO)上加上注解,并指定转换类
/** 创建时间. */
@JsonSerialize(using = Date2LongSerialize.class)
private Date createTime;
@JsonSerialize(using = Date2LongSerialize.class)
/** 更新时间. */
private Date updateTime;
二、后端必须NULL值处理
场景:
后端传递给前端的参数为非必须字段且值为null时,可以不必传输该字段,前端也不会显示该字段,例如该字段:"name": null
数据传输方向:
后端==》前端
方法一
在实际传输的类上添加注解指定该类下的null值不传输
但是该方法在类多时比较繁琐,不推荐
@JsonInclude(JsonInclude.Include.NON_NULL)
方法二
通过配置文件进行全局配置
spring:
jackson:
default-property-inclusion: non_null
三、后端非必须NULL值处理
后端传递给前端的参数为必须字段但是值为null时,且需要后端传递空列表或者空字符串,可以给传输类的属性字段赋予初始值,但是,阿里巴巴规范中不推荐这么做
返回空列表
List<OrderDetail> orderDetailList = new ArrayList<>();
返回空字符串
private String buyerName = "";