SpringBoot分离依赖打包
原创2025年5月19日约 287 字小于 1 分钟
SpringBoot分离依赖打包
Long转String Bigdecimal转String
1. 给 Java 类的属性单独加注解
@JsonSerialize(using=ToStringSerializer.class)
private Long userId;
指定了 ToStringSerializer 进行序列化,将数字编码成字符串格式。颗粒度可以很精细;缺点是太精细,如果需要调整的字段比较多会比较麻烦
2.💯自定义ObjectMapper
可以单独根据类型进行设置,只对 Long 、Bigdecimal数据进行处理,转换成字符串.Jackson 提供了这种支持。方法是对 ObjectMapper 进行定制。根据 SpringBoot 的官方文档,只对 ObjectMapper 进行定制,而不是完全从头定制:
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class JacksonConfig {
@Bean
public Jackson2ObjectMapperBuilderCustomizer jacksonCustomizer() {
return builder -> {
// Long -> String
builder.serializerByType(Long.class, ToStringSerializer.instance);
builder.serializerByType(Long.TYPE, ToStringSerializer.instance); // 基本类型 long
// BigDecimal -> String
builder.serializerByType(BigDecimal.class, ToStringSerializer.instance);
};
}
}
3. 配置参数 write_numbers_as_strings
Jackson 有个配置参数 WRITE_NUMBERS_AS_STRINGS
,可以强制将所有数字全部转成字符串输出。
spring:
jackson:
generator:
write_numbers_as_strings: true
缺点是颗粒度太大,所有的数字都被转成字符串输出,包括按照 timestamp 格式输出的时间
贡献者
wangjialin