springboot 将对象转化成json对象返回给前端,是通过多个消息转换器配合完成的
但是有些时候,默认的转化格式未必符合我们的要求,这个时候就需要进行自定义消息转换器
只需要在@Configuration的类中添加消息转化器的@bean加入到Spring容器,就会在spring启动时被Spring Boot自动加入到容器中。
框架在对消息进行转换时就不会使用默认的转换器,而是使用咱们提供的bean进行处理
需要注意的是,一个转换器只有一个bean会起作用,当转换器重复加到容器中时,只有第一个会起作用
@Bean public MappingJackson2HttpMessageConverter longToStringConverter() { MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); ObjectMapper mapper = new ObjectMapper(); //Long 转String SimpleModule simpleModule = new SimpleModule(); simpleModule.addSerializer(Long.class, ToStringSerializer.instance); simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); mapper.registerModule(simpleModule); //Date格式 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); converter.setObjectMapper(mapper); return converter; }
这是一个示例, 会将对象中的Long类型转换成String返回,同时返回规定格式的日期
如果要对返回消息的编码格式做处理,就需要用到另外一个转换器
如果某个字段不想返回,再对象属性上面加上@JsonIgnore即可
除了这种方式,还可以在继承WebMvcConfigurerAdapter的类中重写(覆盖)configureMessageConverters方法,也能实现这种效果