Springboot + vue 后端把Long类型的数据传给前端,前端可能会出现精度丢失的情况,以及解决方案 |
您所在的位置:网站首页 › post传string类型vue › Springboot + vue 后端把Long类型的数据传给前端,前端可能会出现精度丢失的情况,以及解决方案 |
1前端解决方案: https://juejin.im/post/5c51526fe51d455047338a2a 这位大神的方法 获取到jsonlint.js然后导入本地vue项目 本地使用 import jsonlint from "@/utils/jsonlint.js" // 创建axios实例 const service = axios.create({ 在这里重写方法 transformResponse: [function (data) { // Do whatever you want to transform the data if (typeof data === 'string') { try { data = jsonlint.parse(data); } catch (e) { /* Ignore */ } } return data; }] })2后端解决方案: 1.0 在JavaBean上之间加上下面的注解 (spring boot默认使用Jackson类库),对象序列化成JSON时,将Long转成String import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; @JsonSerialize(using = ToStringSerializer.class)2.0 全局处理 Springboot 2.X配置 import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import org.springframework.boot.jackson.JsonComponent; import org.springframework.context.annotation.Bean; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; @JsonComponent public class JsonSerializerManage { @Bean public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) { ObjectMapper objectMapper = builder.createXmlMapper(false).build(); //忽略value为null 时 key的输出 objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); /** * 序列换成json时,将所有的long变成string * 因为js中得数字类型不能包含所有的java long值 */ SimpleModule module = new SimpleModule(); module.addSerializer(Long.class, ToStringSerializer.instance); module.addSerializer(Long.TYPE, ToStringSerializer.instance); objectMapper.registerModule(module); return objectMapper; } }
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |