一、问题
后端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))
|