从 JSON 个终点保存数据

Saving data from JSON end point

我正在尝试映射返回的 json 并将 ID 保存到 profile/profiles。但是它似乎没有正确映射数据,id: ${ profile.id } 这个位需要更改吗?任何帮助深表感谢。

他们的在线工具可以帮我解决这个问题吗?

API 请求:

  // Grabs company data from the json url
  private getProfiles() {
    let config = {
      headers: {'Authorization':'Bearer AQVVEqNXTWVYPpPYivKNWVO8jsTx2eveV3kBg'}
    }
    axios
      .get("https://cors-anywhere.herokuapp.com/" + "https://api.linkedin.com/v2/me", config)
      .then(response => 
          response.data.map(profile => ({
            id: `${ profile.id }`
         }))
        )
        .then(profiles => {
          this.setState({
            profiles
          });
        })
      // We can still use the `.catch()` method since axios is promise-based
      .catch(error => this.setState({ error, isLoading: false }));
  }

Json返回数据:

{
    "localizedLastName": "King",
    "id": "fm0B3D6y3I",
    "localizedFirstName": "Benn"
}

当我控制台记录 response.data

我不明白,你想做什么。在地图中你有一个回调函数,但我看到你在那里写了一个对象。如果您想重写当前配置文件的 ID,请这样写:

 response.data.map(profile => ({
    profile.id = `${ profile.id }`;
 }))

但是如果你想让它成为一个变量那么这个:

 response.data.map(profile => ({
   let id = `${ profile.id }`;
 }))

如果从您的端点返回的唯一数据是您发布的 JSON,那么您没有要映射的数组。

你只有一个对象。

我以前从未使用过axios库,但查看源代码response.data应该是JSON-从XHR请求中解析的responseText:

https://github.com/axios/axios/blob/4f189ec80ce01a0275d87d24463ef12b16715d9b/lib/adapters/xhr.js#L51-L53

https://github.com/axios/axios/blob/4f189ec80ce01a0275d87d24463ef12b16715d9b/lib/defaults.js#L61

现在我看到你已经发布了 response.data,它符合我的预期。

考虑到这一点,我建议这样处理:

 // Grabs company data from the json url
  private getProfiles() {
    let config = {
      headers: {'Authorization':'Bearer AQVVEqNXTWVYPpPYivKNWVO8jsTx2eveV3kBg'}
    }
    axios
      .get("https://cors-anywhere.herokuapp.com/" + "https://api.linkedin.com/v2/me", config)
      .then(response => ({
            id: profile.id
         }))
        .then(profiles => {
          this.setState({
            profiles
          });
        })
      // We can still use the `.catch()` method since axios is promise-based
      .catch(error => this.setState({ error, isLoading: false }));
  }

不过,您返回的是一份个人资料。如果您需要 profiles 成为一个数组,您需要将响应放入一个数组中。