SpringBoot全局配置long转String丢失精度的问题解决
作者:jdk1.8api 发布时间:2023-02-19 22:58:49
标签:SpringBoot,long,String
目录
第一种方式
第二种方式
第三种方式
第四种方式(缺点:将所有的数字类型都会转为字符串)
web项目中,Java后端传过来的Long/long类型,前端JS接收会丢失精度。
本文推荐第三、第四种方式
第一种方式
简单粗暴,将所有的Lang类型,改为String,数据库改成varchar类型;
第二种方式
自己建个配置类
extends WebMvcConfigurerAdapter 已经被弃用,直接实现WebMvcConfigurer该接口就行了
@EnableWebMvc
@Configuration
public class WebDataConvertConfig implements WebMvcConfigurer {
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
/**
* 序列换成json时,将所有的long变成string
* 因为js中得数字类型不能包含所有的java long值
*/
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
objectMapper.registerModule(simpleModule);
jackson2HttpMessageConverter.setObjectMapper(objectMapper);
converters.add(jackson2HttpMessageConverter);
}
第三种方式
使用Jackson2
@Configuration
public class JacksonConfig {
/**
* Jackson全局转化long类型为String,解决jackson序列化时long类型缺失精度问题
* @return Jackson2ObjectMapperBuilderCustomizer 注入的对象
*/
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder
.serializerByType(Long.class, ToStringSerializer.instance)
.serializerByType(Long.TYPE, ToStringSerializer.instance);
}
}
第四种方式(缺点:将所有的数字类型都会转为字符串)
bootstrap.yml添加以下配置:
spring:
jackson:
#将所有的number类型转为String返回
generator:
write_numbers_as_strings: true
#格式化返回时间 yyyy-MM-dd HH:mm:ss
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
来源:https://blog.csdn.net/qq_44757149/article/details/117158087


猜你喜欢
- 1、maven引入quartz包<!-- https://mvnrepository.com/artifact/org.quartz-
- 今天是开篇,得要吹一下算法,算法就好比程序开发中的利剑,所到之处,刀起头落。 针对现实中的排序问题,算法有七把利剑可以助你马道成功
- 一、使用mybatis-spring-boot-starter1、添加依赖<dependency> <grou
- 本文实例为大家分享了Android实现歌词滚动效果的具体代码,供大家参考,具体内容如下自定义TextViewpublic class Ver
- 我们就可以结合今天的Annotation Processing Tool(APT)来自定义注解处理器。注解处理器简单解释就是收集我们标记的注
- 本文实例实现了C#一键换IP、重置DNS、网关及掩码的功能,具体实现的功能为在程序界面窗口中设置ip地址和子网掩码,设置网关地址,设置DNS
- http无状态协议的解决:HTTP 是一种无状态协议。 无状态协议不要求服务器在多次请求期间保留有关每个用户的信息或状态。但是某些 Web
- 简介Log4J 是 Apache 的一个开源项目(官网 http://jakarta.apache.org/log4j)
- 程序性能的主要表现点:执行速度:程序的反映是否迅速,响应时间是否足够短内存分配:内存分配是否合理,是否过多地消耗内存或者存在内存泄漏启动时间
- 有时候我们在使用java编程的时候,想启动线程,怎么启动呢,下面来分享一下方法第一步在我们的电脑上打开eclipse,创建一个java项目,
- Mybatis的日志模块的适配器模式我们在开发中日志是必不可少的一部分,而市场中有很多日志框架供我们使用,mybatis作为一个开源框架需要
- 实践过程效果代码public partial class Form1 : Form{ public Form1()
- 今年新开Java课程第一步就是…配置环境就从Java的环境配置开始好了以下是正式的步骤首先,从Oracle的官网下载jdk的安装包点我下载J
- 前言大家都知道MySQL数据库很好用,但数据量到了千万以上了,想增加字段是非常痛苦的,这个在MongoDB里就不存在,字段想怎么加就怎么加,
- Springboot上传文件时提示405问题描述:上传文件时请求不通,状态码返回405,如下图: 问题分析:405 Method
- 一、前言CountDownLatch维护了一个计数器(还是是state字段),调用countDown方法会将计数器减1,调用await方法会
- 前言属于基础的面试问题,一定要能够回答全哦~一、继承Thread,重写run方法通过自定义一个类(这里起名为:MyThread),继承Thr
- JAVA简单写学生信息管理系统,实现学生信息的输入、查询、修改、删除操作package Week;import jdk.internal.u
- 异常处理机制1、抛出异常2、捕获异常3、异常处理五个关键字:try、catch、finally、throw、throws注意:假设要捕获多个
- NO.1 单例模式的应用场景单例模式(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点