解决BigDecimal序列化后小数位的0被删除 sping boot用的2.5怎么统一配置处理
24条回答 默认 最新
- Kwan的解忧杂货铺@新空间代码工作室 2024-03-30 18:10关注
获得0.45元问题酬金 晚上好🌙🌙🌙
本答案参考ChatGPT-3.5要解决BigDecimal序列化后小数位的0被删除的问题,可以通过以下方式统一配置处理:
- 在Spring Boot的配置文件(application.properties或application.yml)中设置Jackson的序列化特性:
spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false spring.jackson.serialization.WRITE_BIGDECIMAL_AS_PLAIN=true
这将确保BigDecimal类型字段被正确地序列化为字符串,保留小数位的0。
- 创建一个自定义序列化器来处理BigDecimal类型:
import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; import java.math.BigDecimal; public class BigDecimalSerializer extends JsonSerializer<BigDecimal> { @Override public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializers) throws IOException { gen.writeString(value.stripTrailingZeros().toPlainString()); } }
这个序列化器会将BigDecimal类型的字段转换成字符串,并保留小数位的0。
- 在需要保留小数位的0的BigDecimal类型字段上添加
@JsonSerialize(using = BigDecimalSerializer.class)
注解,或者在全局范围内配置使用该序列化器:
import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; @Configuration public class JacksonConfig { @Bean public Jackson2ObjectMapperBuilder jacksonBuilder() { Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder(); builder.serializerByType(BigDecimal.class, new BigDecimalSerializer()); return builder; } }
这样,无论是在注解上还是在全局配置中,都会使用自定义的序列化器来处理BigDecimal类型。
总结起来,解决BigDecimal序列化后小数位的0被删除的问题可以通过以下步骤:
- 在Spring Boot的配置文件中设置Jackson的序列化特性。
- 创建一个自定义序列化器来处理BigDecimal类型。
- 在需要保留小数位的0的BigDecimal类型字段上添加
@JsonSerialize(using = BigDecimalSerializer.class)
注解,或者在全局范围内配置使用该序列化器。
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 关于移动机器人坐标计算
- ¥30 模拟电路 logisim
- ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
- ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
- ¥15 安装quartus II18.1时弹出此error,怎么解决?
- ¥15 keil官网下载psn序列号在哪
- ¥15 想用adb命令做一个通话软件,播放录音
- ¥30 Pytorch深度学习服务器跑不通问题解决?
- ¥15 部分客户订单定位有误的问题
- ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法