文档章节

Spring boot处理Long类型的Json数据,在Js代码调用时精度丢失的问题

傲慢与偏见与代码
 傲慢与偏见与代码
发布于 2017/03/31 13:54
字数 166
阅读 1110
收藏 3
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import java.util.List;

/**
 * Created by CrazyIter on 2017/3/27.
 */
@EnableWebMvc
@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter {
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
        ObjectMapper objectMapper = new ObjectMapper();
        //将Null指改为空字符串
        objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
            public void serialize(Object value, JsonGenerator jg, SerializerProvider sp) throws IOException, JsonProcessingException {
                jg.writeString("");
            }
        });
        //格式化Date类型的数据
        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
        SimpleModule simpleModule = new SimpleModule();
        //序列换成json时,将所有的long变成string 因为js中得数字类型不能包含所有的java long值
        simpleModule.addSerializer(BigInteger.class, ToStringSerializer.instance);
        simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
        simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
        objectMapper.registerModule(simpleModule);
        jackson2HttpMessageConverter.setObjectMapper(objectMapper);
        converters.add(jackson2HttpMessageConverter);
    }
}

© 著作权归作者所有

傲慢与偏见与代码
粉丝 4
博文 1
码字总数 166
作品 0
内江
程序员
私信 提问
解决js处理Long类型丢失精度的问题

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

xiaomin0322
2018/05/30
0
0
Jison解决JS处理后端返回的Long型数据精度丢失问题

在前端页面展示数据的时候,通常都需要处理来自后端的json数据。通常这个过程都是非常简单的,比如通过jQuery的ajax。但是如果服务器传来的json中包含一个很大的整数,如 { "id": 2966751984...

HSvng
01/30
0
0
SpringBoot,返回JSON,Long前端精准度丢失,Jackson自定义序列化规则

已经很久没写过springboot的相关博客了,前面一段时间一直在写clojure,导致基本很少关注springboot的一些情况,刚好最近在写一些小玩意,期间,遇到一些问题,然后整理了一下,避免其他小伙伴跟我遇...

贺小五
2018/04/15
0
0
guerlab_net/guerlab-spring

guerlab-spring spring 扩展工具集 maven仓库地址 net.guerlabguerlab-spring2.0.0-SNAPSHOT 子项目列表 子项目 说明 guerlab-spring-cloud-starter cloud项目常用依赖包 guerlab-spring-com......

guerlab_net
2018/05/20
0
0
在 Spring Web MVC 环境下使用 DWR

DWR 简介 目前 Ajax 的开发框架有很多,使用这些框架可以简化 Ajax 的开发。DWR (Direct Web Remoting) 是一个用于改善 Web 页面与 Java 类交互的远程服务器端 Ajax 开源框架。DWR 可以动态生...

红薯
2011/01/12
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

Spring系列教程八: Spring实现事务的两种方式

一、 Spring事务概念: 事务是一系列的动作,它们综合在一起才是一个完整的工作单元,这些动作必须全部完成,如果有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过一样。...

我叫小糖主
今天
5
0
CentOS 的基本使用

1. 使用 sudo 命令, 可以以 root 身份执行命令, 必须要在 /etc/sudoers 中定义普通用户 2. 设置 阿里云 yum 镜像, 参考 https://opsx.alibaba.com/mirror # 备份mv /etc/yum.repos.d/CentO...

北漂的我
昨天
2
0
Proxmox VE技巧 移除PVE “没有有效订阅” 的弹窗提示

登陆的时候提示没有有效的订阅You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options. 用的是免费版的,所以每次都提示......

以谁为师
昨天
3
0
Java设计模式之外观模式(门面模式)

什么是外观模式   外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口...

须臾之余
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部