spring boot中使用@ResponseBody注解返回json时Long精度丢失
1.现象
对于Long 类型的数据,如果我们在Controller层通过@ResponseBody
将返回数据自动转换成json时,不做任何处理,而直接传给前端的话,在Long长度大于17位时会出现精度丢失的问题。
2、简单分析
@responseBody
注解的作用是将controller的方法返回的对象通过适当的转换器(默认使用MappingJackson2HttpMessageConverte
转换为指定的格式之后,写入到response对象的body区,需要注意的是,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据,作用等同于 response.getWriter.write(JSONObject.fromObject(user).toString())
;
3、怎么处理
总的来说主要有两种处理方式,最常用的办法就是待转化的字段统一转成String类型
一般有两种方式:首先我们要在maven中添加必须的依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>版本号</