对象的 JSON 数组无法通过索引访问,只能通过“response.data”访问

问题描述

我正在尝试解析一个 JSON 数组:

{
   "data":[
      {
         "dates":"02/01/2021-02/14/2021","profit":23002,"revenue":230
      },...
   ]
}

我希望将此解析的 JSON 对象作为数据传递到 recharts 中,但是当我 console.log 返回 res.data函数时,它被读取为 undefined。在下面的代码中,第一个控制台日志给了我数据,但第二个是未定义的。任何方向都会有所帮助。

const getData = () => {
    axios.get(`https hidden for privacy reasons`)
      .then(res => {
        console.log(res.data)
        return res.data
      })

      .catch((error) => {
        console.log("Ran into error");
      })
  }


console.log(getData())

解决方法

axios.get 是一个带有回调的异步函数。这种类型的函数不返回数据 - 相反,数据只能在提供的回调范围内访问,函数即在

res => {
        console.log(res.data)
        return res.data
      }

匿名函数。

请注意,您的 getData 函数不包含 return 语句,因此将返回 undefined 值。

,

您希望 getData 返回 Axios get 的结果:

const getData = () => {
    return axios.get(`https hidden for privacy reasons`)
      .then(res => {
        console.log(res.data)
        return res.data
      })

      .catch((error) => {
        console.log("Ran into error");
      })
  }

然后你需要Promise.then(或await)结果,因为getData是一个承诺:

  getData().then(result => {
    console.log(result);
  });

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...