赞
踩
JavaScript 无法处理 Java 的长整型 Long 导致精度丢失,具体表现为主键最后两位永远为 0,解决思路: Long 转为 String 返回
方式1 : 通过注解方式
- @Data
- @EqualsAndHashCode(callSuper = false)
- @Accessors(chain = true)
- public class SysRoles implements Serializable {
-
- // 注解处理
- @JsonSerialize(using=ToStringSerializer.class)
- private Long id;
-
- }
方式2: 全局设置 ,改写配置放在容器中。
- @Bean
- public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
- ObjectMapper objectMapper = builder.createXmlMapper(false).build();
- objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
- SimpleModule module = new SimpleModule();
- module.addSerializer(Long.class, ToStringSerializer.instance);
- module.addSerializer(Long.TYPE, ToStringSerializer.instance);
- objectMapper.registerModule(module);
- return objectMapper;
- }
AppledeMacBook-Pro:~ apple$ npm install json-bigint
- import axios from 'axios'
- import store from '@/store'
- import JSONbig from 'json-bigint'
-
- const service = axios.create({
- baseURL: process.env.VUE_APP_BASE_API,
- timeout: 30 * 1000,
- // 在自动解析 JSON 数据之前的 data,处理 Long 类型精度丢失问题
- transformResponse: [function(data) {
- return JSONbig.parse(data)
- }]
- })
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。