此方案基于springboot使用的默认Jackson类库,不需要引入其他jar包。
方案一:
直接在Javabean的属性上使用注解:
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
这种方式适合需要重构序列化属性不多的情况下使用,如果需要重构的属性过多,每个属性都去加注解,还是挺麻烦的。由此,方案二来了。
方案二:
重新构建Jackson序列化方式,将全局long类型转化为String。
新建一个类,实现Jackson2ObjectMapperBuilderCustomizer接口,重写它的customize方法。
该接口的源码如下:
package org.springframework.boot.autoconfigure.jackson;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
@FunctionalInterface
public interface Jackson2ObjectMapperBuilderCustomizer {
void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder);
}
现在,我们来新建一个配置类,重写Jackson2ObjectMapperBuilderCustomizer接口的customize方法。
@Configuration
public class JacksonConfig {
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
Jackson2ObjectMapperBuilderCustomizer cunstomizer = new Jackson2ObjectMapperBuilderCustomizer() {
@Override
public void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder) {
jacksonObjectMapperBuilder.serializerByType(BigInteger.class, ToStringSerializer.instance);
jacksonObjectMapperBuilder.serializerByType(Long.class, ToStringSerializer.instance);
}
};
return cunstomizer;
}
}
以上方案经过生产环境测试可以,祝大家永无bug,元旦快乐!