色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

axios json 無法識別

張吉惟2年前9瀏覽0評論

最近在使用axios時,遇到了一個問題,就是無法正常解析返回的json數(shù)據(jù),居然出現(xiàn)了無法識別的情況,讓我非常困擾。

// 請求數(shù)據(jù)
axios.get('/api/data')
.then(res =>{
console.log(res.data)
})
.catch(err =>{
console.log(err)
})

以上是我的代碼,可以看出非常簡單,就是從后端獲取數(shù)據(jù),然后在控制臺打印出來。但是問題就在這里,當我發(fā)送請求后,返回的數(shù)據(jù)格式是符合標準的json格式,但是控制臺打印出來的卻是亂碼,無法識別。

{
"name": "張三",
"age": 18,
"gender": "男"
...
∟阿斯蒂芬
...
}

在搜尋了一番資料后,發(fā)現(xiàn)了原因所在,就是axios默認使用的是"Content-Type": "application/json;charset=utf-8"的數(shù)據(jù)格式請求,而我的后端返回的數(shù)據(jù)卻是gbk編碼的。這就導致了前端無法正確地解析出來。

解決方法也非常簡單,只需要在axios請求時添加"responseType": "arraybuffer"即可。

// 請求數(shù)據(jù)
axios.get('/api/data', {
responseType: 'arraybuffer'
})
.then(res =>{
const data = iconv.decode(Buffer.from(res.data), 'gbk')
console.log(JSON.parse(data))
})
.catch(err =>{
console.log(err)
})

添加上上述的幾行代碼后,運行程序,可以發(fā)現(xiàn)控制臺打印出來的數(shù)據(jù)已經(jīng)可以正常識別了。完美解決了問題。