1.思路:
axios在内部自动将JSON格式字符串使用JSON.parse()转对象,但超出安全整数范围-2^53到2^53的id无法精确表示
2.解决:
【1】npm i json-bigint
【2】axios的使用api
【3】request.js文件
/*
请求模块配置文件
*/
import axios from "axios";
import store from '@/store/index'
import { tansParams } from "./util";
import JSONBig from 'json-bigint'
const request = axios.create({
baseURL: 'http://192.168.8.237:8002/',
timeout: 2000,
// 自定义后端返回的原始数据data(JSON格式字符串)
transformRequest: [function (data) {
try {
return JSONBig.parse(data)
} catch (error) {
return data
}
// axios默认JSON.parse(data)
// return data;
}],
})
注: 在页面使用时,如果接口是拼接字符串,就不用转了(自动会转)字符串
3.案例:
import JSONBig from 'json-bigint'
const jsonstr = '{"art_id":123363437471485155838}'
console.log(JSON.parse(jsonstr)) //{art_id: 123363437471485150000}
console.log(JSONBig.parse(jsonstr))//把JSON格式字符串转为JS对象 //art_id: BigNumber c: (2) [1233634, 37471485155838] e: 20 s: 1
// 把BigNumber类型的数据转为字符串来使用
console.log(JSONBig.parse(jsonstr).art_id.toString())//123363437471485155838
console.log(JSON.stringify(JSONBig.parse(jsonstr))) //{"art_id":"123363437471485155838"}
console.log(JSONBig.stringify(JSONBig.parse(jsonstr))) //把JS对象转为JSON格式字符串 //{"art_id":123363437471485155838}