axios 参数传入JSON数组,解析格式错误

传入格式是 [{},{}]正确的,下图
axios 参数传入JSON数组,解析格式错误

但是到接口里解析就成了这样下图
axios 参数传入JSON数组,解析格式错误

请问这个问题什么导致的,怎么解决呢

封装的代码

// request interceptor

request.interceptors.request.use(config => {

if (!config.headers['Content-Type']) {

config.headers['Content-Type'] = 'application/x-www-form-urlencoded'

config.data = qs.stringify(config.data)

}

return config

}, errorHandler)

想得到的格式
axios 参数传入JSON数组,解析格式错误


回答:

axios 参数传入JSON数组,解析格式错误

看请求标头,你这里上传的请求体格式是 application/x-www-form-urlencoded 表单格式的,axios 按此序列化是对的。

如果你要上传 JSON 格式的,这里应该是 application/json。

不过默认来说就是 JSON 的才对,除非你改了 Content-Type 或者手动序列化了 data(比如用了 qs 库)。这个得看你是咋封装的了,关键代码你没贴出。


【补充回答】

function formatData(obj) {

const res = {};

Object.keys(obj).forEach(key => {

if (Object.prototype.toString.apply(obj[key]) === '[object Object]') {

res[key] = JSON.stringify(obj[key]);

} else {

res[key] = obj[key];

}

});

return res;

}

let data = {

num: 0,

str: 's',

bflag: true,

obj: {

key: 'value'

},

arr: [

{

key: 'value'

}

]

};

let qs = Qs.stringify(formatData(data));

console.log(qs);

axios 参数传入JSON数组,解析格式错误


回答:

import qs from 'qs'

paramsSerializer(params) {
return qs.stringify(params, { arrayFormat: 'indices' })
}

以上是 axios 参数传入JSON数组,解析格式错误 的全部内容, 来源链接: utcz.com/p/936331.html

回到顶部