项目中使用fastjson,Spring MVC返回个前端Long类型的数据时,js在获取数据时会丢失精度,从而造成数据的不准确,
解决方式呢,就是在序列化时将Long类型的数据转化为String类型;
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 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); } }
配置SpringMvc.xml配置文件
<!--解决fastJson 转换long型,精度丢失的问题--> <bean id="fastJsonConfigExt" class="com.jhf.config.FastJsonConfigExt"/> <!-- 解决@ResponseBody注解直接返回对象并转换成JSON时出现406问题,同时解决了返回String类型乱码的问题 --> <mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/plain;charset=UTF-8</value> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="fastJsonConfig" ref="fastJsonConfigExt" /> <property name="supportedMediaTypes"> <list> <value>application/json; charset=UTF-8</value> <value>application/x-www-form-urlencoded; charset=UTF-8</value> </list> </property> <property name="features"> <list> <!-- null String也要输出 --> <value>WriteMapNullValue</value> <!-- 输出key时是否使用双引号 --> <value>QuoteFieldNames</value> <!-- 字符类型字段如果为null,输出为"",而非null --> <value>WriteNullStringAsEmpty</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>