HarmonyOS鸿蒙Next中使用axios进行网络请求,当返回结果中数据含有超长数字时,数字会被科学计数处理
HarmonyOS鸿蒙Next中使用axios进行网络请求,当返回结果中数据含有超长数字时,数字会被科学计数处理
3 回复
axios 内部会对后端返回的数据进行 JSON.parse 的操作,JSON.parse会导致超长数字的精度丢失,可以通过重写transformResponse方法,修改返回数据,导入json-bigint包,使用JsonBigInt.parse(data)转换返回数据,试下demo
axios<string, AxiosResponse<string>, null>({
url: 'https://www.xxx.com/info',
method: 'get',
responseType: 'array_buffer',
transformResponse:(data)=>{
return JsonBigInt.parse(data)
}
}).then((res: AxiosResponse) => {
// 处理请求成功的逻辑
})
更多关于HarmonyOS鸿蒙Next中使用axios进行网络请求,当返回结果中数据含有超长数字时,数字会被科学计数处理的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中使用axios进行网络请求时,如果返回结果中的数字超长,可能会被科学计数法处理。这是因为JavaScript在处理超长数字时默认采用科学计数法来表示。要解决这个问题,可以在接收到数据后对数字进行处理,确保其以字符串形式保存,避免被自动转换为科学计数法。
具体操作可以在axios的响应拦截器中,对返回的数据进行遍历,判断是否为数字,如果是超长数字则将其转换为字符串。例如:
axios.interceptors.response.use(response => {
const data = response.data;
if (data && typeof data === 'object') {
for (let key in data) {
if (typeof data[key] === 'number' && data[key].toString().length > 15) {
data[key] = data[key].toString();
}
}
}
return response;
}, error => {
return Promise.reject(error);
});
这样可以确保返回的超长数字以字符串形式保存,避免科学计数法处理。
在HarmonyOS鸿蒙Next中使用axios进行网络请求时,如果返回的数据中含有超长数字,可能会被自动转换为科学计数法表示。为了避免这种情况,可以在接收到响应后对数据进行处理,将科学计数法的数字转换为字符串形式。例如:
axios.get('your-api-endpoint')
.then(response => {
const data = response.data;
// 将科学计数法的数字转换为字符串
if (typeof data.number === 'number') {
data.number = data.number.toString();
}
console.log(data);
})
.catch(error => {
console.error(error);
});