一、背景
工程为springboot框架,现需要统一将服务端接口返回数据内的时间格式定为"yyyyMMdd HH:mm:ss"。
二、方法一
在bean上面添加注解@JsonFormat,指定数据格式,代码如下:
@NoArgsConstructor
@Data
public class Article {
/**
* id : 1
* author : xxx
* title : dddd
* content : sss
* createTime : ssss
* reader : [{"name":"ss","age":11}]
*/
private int id;
private String author;
private String title;
private String content;
private String createTime;
private List<ReaderBean> reader;
@JsonFormat(pattern="yyyyMMdd HH:mm:ss")
private Date date;
@NoArgsConstructor
@Data
public static class ReaderBean {
/**
* name : ss
* age : 11
*/
private String name;
private int age;
}
}
这样做的弊端就是需要给每个bean都添加注解@JsonFormat,无法统一处理,也不具备灵活性,如果后续要修改格式为"yyyyMMdd",需要再对每个bean进行修改。
三、方法二
springboot框架支持自定义消息转换器,可对数据格式做统一处理,代码如下:
@Configuration
public class CustomMessageConverter {
@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat("yyyyMMdd HH:mm:ss"));
return new MappingJackson2HttpMessageConverter(objectMapper);
}
}
在上述的代码中,我们自定义了mappingJackson2HttpMessageConverter对象的创建,通过设置ObjectMapper对象的setDateFormat方法,完成了统一的时间格式的转换。
来源:oschina
链接:https://my.oschina.net/u/4846367/blog/4940400