vue开发中使用axios请求回来的数据类型status原来是数值,为什么在页面上会变成布尔了?

同样的一个条数据在 network 中显示 的和console.log中显示的都不一样

在Vue开发中使用Axios发送请求,Axios会默认将响应数据解析为JSON格式,并将其中的数字类型都转化为布尔类型。这是因为在JavaScript中,布尔类型和数字类型都是原始数据类型,并且相互转换的规则是0和NaN转化为false,其他数值转化为true。因此,Axios在解析JSON数据时,将数值0和1分别转换为false和true。
如果你需要保留数值类型,可以在Axios的配置中设置transformResponse属性,手动解析JSON数据并保留数值类型。示例如下:
axios({
method: 'get',
url: '/api/data',
transformResponse: [function (data) {
return JSON.parse(data, (key, value) => {
if (typeof value === 'string' && /^-?\d+(\.\d+)?$/.test(value)) {
return parseFloat(value);
}
return value;
});
}]
})
这里的transformResponse属性是一个函数数组,可以定义多个解析响应数据的函数,Axios会按照数组顺序依次调用这些函数。在上面的示例中,我们定义了一个函数来解析JSON数据,判断每个属性值是否是一个数值字符串,如果是就手动转换为数值类型并返回,否则返回原值。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-02-16
    Vue在渲染和解析数据的时候可能会将数字视为布尔值进行类型转换,因此原来的数值状态可能会变成布尔值。