文档章节

SpringMVC使用FastJson并解决长数值精度丢失问题

傲娇字符
 傲娇字符
发布于 02/03 18:09
字数 402
阅读 339
收藏 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>

© 著作权归作者所有

共有 人打赏支持
傲娇字符
粉丝 5
博文 37
码字总数 14089
作品 0
武汉
架构师
解决js处理Long类型丢失精度的问题

项目中很多时候都会用到json,常用的有fastjson,Jackson等等这些,有时候为了统一,我们通常就会约定使用某一种。 不管使用哪种,Spring MVC返回个前段Long类型的数据时,js在获取数据时会丢...

xiaomin0322
05/30
0
0
fastjson将Long型转成json精度丢失问题解决

这是jackson public void extendMessageConverters(List> converters) { for (HttpMessageConverter c : converters) { if (c instanceof MappingJackson2HttpMessageConverter) { MappingJa......

诗和_远方
07/13
0
0
Spring Cloud: 使用kill命令优雅关闭微服务, 解决退出时Eureka取消注册操作耗时过长的坑

关于Spring Cloud服务优雅关闭的方案有很多种了,这里介绍一下使用命令优雅关闭的方案,并解决会出现的问题。 所谓的优雅指两方面,一是程序在退出时要主动向Eureka取消注册自己,二是完成资...

司青玄
05/23
0
0
SpringMVC 中的Controller返回JSON数据

SpringMVC中的Controller返回JSON问题 ①配置JSON解析器 ②使用注解@ResponseBody返回的是json,没有使用该注解,则会进行页面跳转。 方案一

IamOkay
2014/11/21
0
0
网站平台需要在交易系统发起一笔交易后,进行新交易的提示,就像微博好友圈的新微博提示。采用什么办法来解决这个需求呢

网站平台和交易系统是两套系统,两套系统之间是通过dubbo互相调用服务的。网站平台就是我们公司的商户使用的平台。现在有一个新需求就是:商户的用户每发起一笔交易,在商户平台都要进行一条...

泡飞
2016/03/20
405
3
在JFinal的Controller中接收json数据

JFinal中接收URL中的参数或者model中的参数是很方便的,但是对于web2.0的网站来说,经常会以json方式提交比较复杂的数据,比如一个查询,包含了各种过滤条件和排序分页,前端脚本可能提交的数...

BoyTNT
2015/09/25
0
0
Spring4 MVC json问题(406 Not Acceptable)

为了配合ECS 把原来房子BAE中的代码重新构建,发现发送JSON数据与EXTJS不配合,找了很久发现CSDN上有篇文章正好解决了,庆幸有互联网。 用的是第二中方法 原帖:http://blog.csdn.net/woshiw...

夏碌冬藏
2014/08/03
0
1
框架性能和易用优劣比较----之我见

1、对比(Jackson、json-lib、fastjson)性能选择Jackson为数据传输json转换器 。fastjson对null数据处理的不是很好得需要自己重新写基于SerializerFeature的实现类。 http://hjg1988.iteye...

晨润--菜菜
2014/03/07
0
2
Fastjson、Jackson与SpringMVC整合的MessageConverter配置

1.Jackson maven依赖 springmvc-servlet.xml中配置 2.FastJson 由于FastJson针对Spring4.2以后进行特殊优化,具体如图 所以FastJson可以分为Spring4.2及以下配置和Spring4.2以上的不同配置 ...

楠木楠
2016/11/30
1K
0
网站平台需要在交易系统发起一笔交易后,进行新交易的提示,就像微博好友圈的新微博提示。采用什么办法来解决这个需求

网站平台和交易系统是两套系统,两套系统之间是通过dubbo互相调用服务的。网站平台就是我们公司的商户使用的平台。现在有一个新需求就是:商户的用户每发起一笔交易,在商户平台都要进行一条...

泡飞
2016/03/20
498
3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

【面试题】盲人坐飞机

有100位乘客乘坐飞机,其中有一位是盲人,每位乘客都按自己的座位号就坐。由于盲人看不见自己的座位号,所以他可能会坐错位置,而自己的座位被占的乘客会随便找个座位就坐。问所有乘客都坐对...

garkey
10分钟前
0
0
谈谈神秘的ES6——(二)ES6的变量

谈谈神秘的ES6——(二)ES6的变量 我们在《零基础入门JavaScript》的时候就说过,在ES5里,变量是有弊端的,我们先来回顾一下。 首先,在ES5中,我们所有的变量都是通过关键字var来定义的。...

JandenMa
今天
1
0
arts-week1

Algorithm 594. Longest Harmonious Subsequence - LeetCode 274. H-Index - LeetCode 219. Contains Duplicate II - LeetCode 217. Contains Duplicate - LeetCode 438. Find All Anagrams ......

yysue
今天
0
0
NNS拍卖合约

前言 关于NNS的介绍,这里就不多做描述,相关的信息可以查看NNS的白皮书http://doc.neons.name/zh_CN/latest/nns_background.html。 首先nns中使用的竞价货币是sgas,关于sgas介绍可以戳htt...

红烧飞鱼
今天
1
0
Java IO类库之管道流PipeInputStream与PipeOutputStream

一、java管道流介绍 在java多线程通信中管道通信是一种重要的通信方式,在java中我们通过配套使用管道输出流PipedOutputStream和管道输入流PipedInputStream完成线程间通信。多线程管道通信的...

老韭菜
今天
0
0
用Python绘制红楼梦词云图,竟然发现了这个!

Python在数据分析中越来越受欢迎,已经达到了统计学家对R的喜爱程度,Python的拥护者们当然不会落后于R,开发了一个个好玩的数据分析工具,下面我们来看看如何使用Python,来读红楼梦,绘制小...

猫咪编程
今天
1
0
Java中 发出请求获取别人的数据(阿里云 查询IP归属地)

1.效果 调用阿里云的接口 去定位IP地址 2. 代码 /** * 1. Java中远程调用方法 * http://localhost:8080/mavenssm20180519/invokingUrl.action * @Title: invokingUrl * @Description: * @ret......

Lucky_Me
今天
1
0
protobuf学习笔记

相关文档 Protocol buffers(protobuf)入门简介及性能分析 Protobuf学习 - 入门

OSC_fly
昨天
0
0
Mybaties入门介绍

Mybaties和Hibernate是我们在Java开发中应用的比较多的两个ORM框架。当然,目前Mybaties正在慢慢取代Hibernate,这是因为相比较Hibernate而言Mybaties性能更好,响应更快,更加灵活。我们在开...

王子城
昨天
2
0
编程学习笔记之python深入之装饰器案例及说明文档[图]

编程学习笔记之python深入之装饰器案例及说明文档[图] 装饰器即在不对一个函数体进行任何修改,以及不改变整体的原本意思的情况下,增加函数功能的新函数,因为这个新函数对旧函数进行了装饰...

原创小博客
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部