首页 > 其他分享 >SpringBoot BigDecimal精度丢失

SpringBoot BigDecimal精度丢失

时间:2023-08-12 10:34:01浏览次数:39  
标签:jackson bigDecimal 丢失 import fasterxml com BigDecimal SpringBoot

  • jackjson自动丢弃了小数位最末尾的0
private BigDecimal price;
price=12.10;
返回自动转为了12.1

  

  • 解决方案
  • 1: 返回字段都用字符串
  • 2:BigDecimal序列化自定义处理
package com.lenovo.lps.cost.integrator.config;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import lombok.SneakyThrows;

import java.math.BigDecimal;

public class BigDecimalSerializer extends JsonSerializer<BigDecimal> {

    @SneakyThrows
    @Override
    public void serialize(BigDecimal bigDecimal, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) {
        if (null != bigDecimal) {
            String plainString = bigDecimal.toPlainString();
            jsonGenerator.writeString(plainString);
        }
    }
}

  

  • 在返回的对象属性上引用序列化类
@JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal variablePrice;

  

标签:jackson,bigDecimal,丢失,import,fasterxml,com,BigDecimal,SpringBoot
From: https://www.cnblogs.com/coderdxj/p/17624463.html

相关文章

  • SpringBoot复习:(21)自定义ImportBeanDefinitionRegistrar
    要达到的目的:将某个包下使用了某个自定义注解(比如@MyClassMapper)的类注册到Spring容器。一、自定义注解:packagecom.example.demo.service;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;@Retention(RetentionPolicy.RUNTIME)publ......
  • SpringBoot复习:(20)如何把bean手动注册到容器?
    可以通过实现BeanDefinitionRegistryPostProcessor接口,它的父接口是BeanFactoryPostProcessor.步骤:一、自定义一个组件类:packagecom.example.demo.service;publicclassMusicService{publicMusicService(){System.out.println("musicserviceconstructed!......
  • SpringBoot复习:(19)Condition接口和@Conditional注解
    Condition接口代码如下:publicinterfaceCondition{ booleanmatches(ConditionContextcontext,AnnotatedTypeMetadatametadata);}它是一个函数式接口,只有一个方法matches用来表示条件是否满足。matches方法中的ConditionContext类对象context可以通过getEnvironment方法获......
  • 32.SpringBoot整合high-level-client
    idea中使用es创建一个bianen-search模块 在mydata文件夹下创建一个nginx文件夹:mkdirnginx随便启动一个nginx实例,只是为了复制出配置:dockerrun-p80:80--namenginx-dnginx:1.10 如下图可以看到启动好了nginx容器,当然这个容器我们只是为了用来复制它的配置文......
  • springboot jar thin
    springbootjarthinspringboot应用jar瘦身。springbootjar太大。jar与依赖包分离。两种方法,第一种,spring-boot-thin-launcher,他将依赖包以maven仓库的形式放到repository目录。第二种,将依赖包以jar包的方式放到一个目录下,比如libs目录。spring-boot-thin-launcher这种......
  • Springboot跨域问题,options请求
    ......
  • SpringBoot打包war部署到tomcat
    项目结构:pom.xml:<!--①指定打包成war--><packaging>war</packaging><dependencies><!--starter-web:spring-webmvc+autoconfigure+logback+yaml+tomcat--><dependency><groupId>org.springframework.b......
  • 基于Springboot的短视频网站设计
    随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,短视频管理当然也不能排除在外。短视频网站是以实际运用为开发背景,运用软件工程开发方法,采用SPRINGBOOT+VUE.JS技术构建的一个管理系统。整个开发过程首先对软件系统进行......
  • Drools 7.67.0 + DMN 1.2 + SpringBoot3 构建规则引擎
    背景:基于项目工作的需要,要建立一个规则引擎的应用集中式的管理业务中的规则流程等,所以先探索一个MVP1.什么是规则引擎,同类竟品?规则引擎的主要思想是将应用程序中的业务决策部分分离出来,并使用预定义的语义模板编写业务决策(业务规则),由用户或开发者在需要时进行配置、管理。需......
  • SpringBoot系列---【SpringBoot在多个profiles环境中自由切换】
    SpringBoot在多个profiles环境中自由切换1.在resource目录下新建dev,prod两个目录,并分别把dev环境的配置文件和prod环境的配置文件放到对应目录下,可以在配置文件中指定激活的配置文件,也可以默认不指定。2.在pom.xml中最后位置,新增下面两部分配置<project><build>......