Springboot maneja el formato de conteo científico de datos BigDecimal, mostrando el problema de E+8

Como se muestra en la imagen:

Método de procesamiento:

 basado en JsonSerializer de springboot, personalizamos el procesamiento de JsonSerializer para propiedades de tipo 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;
import java.util.Objects;

/**
 * @Description 
 * @auther JCccc
 * @date 2023-03-11
 */
public class MyBigDecimalSerialize extends JsonSerializer<BigDecimal> {
    @Override
    public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        if(Objects.nonNull(value)) {
  
            gen.writeString( value.stripTrailingZeros().toPlainString());
            
        }else {
            //为null的处理,就返回null ,或者可以自己处理
            gen.writeNull();
        }
    }
}

 ¿De qué trata esto? 

Puedes ver una simple línea de código:
 

value.stripTrailingZeros().toPlainString()

¿Qué hizo esto?

tira de ceros finales ()

Elimine todos los 0 finales y devuelva un tipo de datos BigDecimal, que no se puede garantizar que sea notación científica.

aPlainString()

Convierta los datos de tipo BigDecimal en datos de tipo String y asegúrese de que no sea una notación científica.

 

Entonces, ¿cómo usarlo? Es muy simple, solo use la anotación @JsonSerialize en las propiedades que deben procesarse en la clase de entidad devuelta de nuestra interfaz.

Ejemplo:
 

    @JsonSerialize(using= MyBigDecimalSerialize.class)
    private BigDecimal p1Amt;

    @JsonSerialize(using= MyBigDecimalSerialize.class)
    private BigDecimal t1Amt;

    @JsonSerialize(using= MyBigDecimalSerialize.class)
    private BigDecimal c1Amt;


De hecho, podemos manejar muchas cosas basándonos en esto, por ejemplo, cuando el valor devuelto es 0, quiero devolver 0.00;

Al devolver 0.0, también quiero devolver 0.00, que se puede manejar con esto:

Es decir, puedo usar este JsonSerializer personalizado para reproducir mi propio procesamiento comercial único.

Supongo que te gusta

Origin blog.csdn.net/qq_35387940/article/details/131476114
Recomendado
Clasificación