我们做后端开发的有时候要返回给前端的数据格式不符合怎么办?
举个例子,比如一张表中的时间,数据库中存储的是yyy-mm-dd hh:mm:ss 这样的形式,而前段需要的是精确到秒的格式,那我们不可能直接把这种格式的数据直接返回给前端吧?!
直接返回回去会跟前端掐起来的。。。。那怎么办?从数据库查出来的时候去转换一下?。嗯可以,但是问题又来了,那我在A方法中查询要转换一下,B方法中要转换一下...
这样就会导致代码冗余。除了使用自定义工具类,还有一种方法更直接,那就是使用@JsonSerialize(com.fasterxml.jackson.databind.annotation.JsonSerialize)注解。
使用步骤:
1.在实体类中在要转换的字段上加上该注解,如下:
/** 订单创建时间 */
@JsonSerialize(using = DateToLongSerializer.class)
private Date createTiem;
2.并指定一个格式化的类。如下:
public class DateToLongSerializer extends JsonSerializer<Date> {
@Override
public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeNumber(date.getTime() / 1000);
}
}
数据存储在数据库中的格式:

转换后的效果(返回给前端的json格式):

再介绍一个注解:
@JsonIgnore 该注解的作用是转成json时不返回给前端
本文探讨了后端开发中常见的数据格式不匹配问题,特别是日期格式的转换,提出使用@JsonSerialize注解配合自定义序列化类实现统一格式输出,避免代码冗余,提升前后端数据交互效率。
1875

被折叠的 条评论
为什么被折叠?



