避坑13_Unexpected token o in JSON at position 1 at JSON.parse

一、问题

后端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)); 值得注意的是深拷贝的特性,具体移步

经验分享 程序员 微信小程序 职场和发展