一、问题
后端mock数据:
在使用axios请求数据时
mounted() {
axios.get(this.baseUrl).then((res) => {
for (var i = 0; i < 10; i++) {
var myData = JSON.parse(res.data);
this.nameArr.push(myData.info[i].name)
console.log(this.nameArr[i]);
}
});
},
控制台报错:Unexpected token o in JSON at position 1 at JSON.parse
二、原因及解决方法
原因:
var myData = JSON.parse(res.data);
该条语句中的res.data
是一个对象即图1中的
{
"info":[
{
"name": "@cname",
"age|1-80": 20
},
{
"name": "@cname",
"age|1-80": 20
},
{
"name": "@cname",
"age|1-80": 20
}
]
}
当使用JSON.parse
时,其实解析的是JSON.parse([object])
,因此会报错
解决
将
var myData = JSON.parse(res.data);
改为:
var myData = res.data
或使用深拷贝:
var myData = JSON.parse(JSON.stringify(res.data));
值得注意的是深拷贝的特性,具体移步 博客园_JSON.parse(JSON.stringify(obj))