SpringMVC使用FastJson并解决长数值精度丢失问题
SpringMVC使用FastJson并解决长数值精度丢失问题
傲娇字符 发表于4个月前
SpringMVC使用FastJson并解决长数值精度丢失问题
  • 发表于 4个月前
  • 阅读 164
  • 收藏 2
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

项目中很多时候都会用到json,常用的有fastjson,Jackson等等这些,有时候为了统一,我们通常就会约定使用某一种。 不管使用哪种,Spring MVC返回个前段Long类型的数据时,js在获取数据时会丢失精度,从而造成数据的不准确,解决方式呢,就是在序列化时,会将Long类型的数据转化为String类型 在使用Spring MVC默认的Jackson时,我们可以这么做:

1、编写FastJsonConfig扩展类

package com.chz.component.basic.configure;

import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.ToStringSerializer;
import com.alibaba.fastjson.support.config.FastJsonConfig;

import java.math.BigInteger;

public class FastJsonConfigExt extends FastJsonConfig {

    public FastJsonConfigExt(){
        super();
        SerializeConfig serializeConfig = SerializeConfig.globalInstance;
        serializeConfig.put(BigInteger.class, ToStringSerializer.instance);
        serializeConfig.put(Long.class,ToStringSerializer.instance);
        serializeConfig.put(Long.TYPE,ToStringSerializer.instance);
        this.setSerializeConfig(serializeConfig);
    }

}

2、配置SpringMvc.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

    <aop:aspectj-autoproxy proxy-target-class="true" />

    <mvc:annotation-driven />

    <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"/>


    <bean id="webBindingInitializer" class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
        <property name="conversionService" ref="conversionService"/>
    </bean>

    <bean id="fastJsonConfigExt" class="com.chz.component.basic.configure.FastJsonConfigExt"/>

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="webBindingInitializer" ref="webBindingInitializer"/>
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.BufferedImageHttpMessageConverter"/>
                <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                    <property name="fastJsonConfig" ref="fastJsonConfigExt" />
                    <property name="supportedMediaTypes">
                        <list>
                            <value>text/html;charset=UTF-8</value>
                            <value>application/json</value>
                            <value>application/xml;charset=UTF-8</value>
                            <value>application/x-www-form-urlencoded</value>
                        </list>
                    </property>

                </bean>
            </list>
        </property>
    </bean>

    <context:annotation-config />

    <context:component-scan base-package="com.chz.**.controller,com.cxkh.**.controller" />

    <!-- 上传拦截,如最大上传值及最小上传值 -->
    <bean id="multipartResolver"
          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="utf-8" />
        <property name="maxUploadSize" value="25474565" />
    </bean>

    <mvc:resources mapping="/static/**" location="classpath:static/"/>
    <mvc:resources mapping="/*.html" location="/"/>
</beans>
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 3
博文 34
码字总数 10894
×
傲娇字符
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: