后端将Long类型数据传输到前端出现精度丢失的问题

Posted qingmuchuanqi48

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了后端将Long类型数据传输到前端出现精度丢失的问题相关的知识,希望对你有一定的参考价值。

当将超过16位的数字传输到前端的时候,就会出现精度丢失的问题,然后我按照网上的几种方法实验的时候,只有一种方法成功了.可能是因为环境等方面的问题.

我这里成功是因为:最后使用的是配置mvc的方式,然后成功了 配置的地方是在当前的Controller层下面创建converter包 

package converter;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

public class LongToStringJsonConverter extends ObjectMapper {

    public LongToStringJsonConverter() {
        super();
        SimpleModule simpleModule = new SimpleModule();
        simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
        simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
        registerModule(simpleModule);
    }
}

配置文件:

<mvc:annotation-driven >
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg index="0" value="utf-8" />
                <property name="supportedMediaTypes">
                    <list>
                        <value>application/json;charset=UTF-8</value>
                        <value>text/plain;charset=UTF-8</value>
                    </list>
                </property>
            </bean>
           <-对日期进行转化的->
            <bean
                    class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper">
                    <bean class="com.jay.jackson.util.CustomObjectMapper">
                        <property name="dateFormat">
                            <bean class="java.text.SimpleDateFormat">
                                <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />
                            </bean>
                        </property>
                    </bean>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

还有一种解决方法,就是将数据库中的数据改为String类型,也可以完全解决这个问题.如果不想动数据库的时候,可以尝试上面的这种方法.

以上是关于后端将Long类型数据传输到前端出现精度丢失的问题的主要内容,如果未能解决你的问题,请参考以下文章

解决long类型和前端交互精度丢失问题

解决long类型和前端交互精度丢失问题

解决long类型和前端交互精度丢失问题

长整型Long返回到前端,js出现精度丢失怎么办

Springboot Long类型数据太长返回给前端,精度丢失问题 复现解决

Spring Mvc Long类型传输到前端精度丢失